페이지

2014년 8월 5일 화요일

Node.js, Redis

Session 1/4 대충 훓어 보는 Node.js
http://www.youtube.com/watch?v=84EnRBwIs3U
Session 2/4 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능성과 한계성
http://www.youtube.com/watch?v=PpbT8MXfElc
Session 3/4 Socket.io를 활용한 분산 채팅 서버 개발 사례 공유
http://www.youtube.com/watch?v=CVt-B5T-2Gk
Session 4/4 Node.js로 해보는 클라우드 서비스
http://www.youtube.com/watch?v=wNPOW5MyKcM
소셜앱 개발 노하우 선데이토즈 임현수 cto
http://www.slideshare.net/Cyworld/004-cto
쇼셜게임(서버)의 특징
- 쓰기(Create, Update, Delete)가 읽기(Read)보다 훨씬 많다.
- 데이터는 계속 변한다.
- 하나의 인스턴스를 여러명이 갱신하는 경우가 많다.
- 트랜잭션 단위의 요청이 많다.
- 하루에 N번씩 할 수 있는 행동
- N분마다 1번씩 할 수 있는 행동
- 내 작물에 1번씩 할 수 있는 행동
- 내 친구한테 1번씩 할 수 있는 행동
- 내 친구 작물에 1번씩 할 수 있는 행동
Redis
- Persistance Storage
- 다양한 Data Structures 지원
(String, SET, Sorted SET, LIST, Hash)
- 고성능
- 유용한 기능들
(KEYS, INCR, INCRBY, DECR, DECRBY, TTL, SDIFF)
- 명령어
(공통 : exists, del, type, keys, randomkeys, flushdb, ttl, expire)
(String : get, set, getset, mget, mset, incr, incrby, decr, decrby)
(List : pop, push, index, lrange, ltrim, llen, blpop, brpop, rpoplppush, brpoplpush)
(SET : sadd, srem, spop, smove, scard, sismember, smembers, srandmember, sinter, sinterstore, sunion, sunionstore, sdiff, sdiffstore)
장점
- RDBMS 에서 N번의 쿼리로 해야할 일을 1번의 쿼리로 수행할 수 있다.
- RDBMS 에서 N개의 row를 검색해서 얻어야하는 결과를 적절한 data structure를 사용해서 적은 cost로 수행할 수 있다.
유용한 기능들
- INCR, INCRBY
-- redis> SET visitors "10"
-- OK
-- redis>INCRBY visitors 5
-- (interger) 15
-- 내 농장 오늘/전체 방문자수
-- (오늘) 선물 보낸 횟수
-- 소셜 에너지 카운팅(with expire)
- SET
-- 하루에 한번만 할 수 있는 행동들에 사용
-- Key에 expire를 주거나, daily DB를 flush
-- SADD (set에 member 추가)
-- SCARD (count)
-- SRANDMEMBER (랜덤 member -- SISMEMBER (특정 member가 set 안에 존재하는지 확인)
-- 친구의 농장에서 보물상자를 열 수 있다.
-- 친구 1명당 하루에 1번 열 수 있다.
-- User B가 보물 상자를 연 친구들의 목록 : SMEMBERS OPEN_BOX:USER_B
-- User B가 보물상자를 연 횟수 (일일 제한)
: SCARD OPEN_BOX:USER_B
-- User A가 User B의 농장에서 보물상자를 열었는지
: SISMEMBER OPEN_BOX:USER_A USER_B
- LIST
-- LLEN (get the length of a list)
-- LPUSH (prepend a value to a list)
-- LREM (remove elements from a list)
-- LTRIM (trim a list to the specified range)
-- 최근 내 농장에서 친구들이 취한 액션들 : 최근 30개, 최근 순서대로
단점
- sharding 을 직접 구현해야한다.
-- REDIS 3.0에서는 Clustering 지원 예정
-- 데이터 사이즈가 커지면 (특히 string) 메모리 사용량이 급격히 늘어난다.
-- 메모리의 데이터를 DISK 로 snapshotting 할 때 I/O 가 급격히 상승한다. 데이터의 크기가 커질수록 더 심하다.

이것이 레디스다.
http://www.slideshare.net/krisjeong/this-is-redis-kor-slideshare
Redis
http://www.slideshare.net/andris9/redis
Session 1/4 대충 훓어 보는 Node.js
http://www.youtube.com/watch?v=84EnRBwIs3U
Session 2/4 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능성과 한계성
http://www.youtube.com/watch?v=PpbT8MXfElc
Session 3/4 Socket.io를 활용한 분산 채팅 서버 개발 사례 공유
http://www.youtube.com/watch?v=CVt-B5T-2Gk
Session 4/4 Node.js로 해보는 클라우드 서비스
http://www.youtube.com/watch?v=wNPOW5MyKcM
소셜앱 개발 노하우 선데이토즈 임현수 cto
http://www.slideshare.net/Cyworld/004-cto
ZooKeeper를 활용한 Redis Cluster 관리
http://helloworld.naver.com/helloworld/294797
Redis
http://www.slideshare.net/knight1128/redis-8896084?ref=http://bcho.tistory.com/607
Redis to the Rescue (Buzzwords Berlin)
http://www.slideshare.net/wooga/redis-to-the-rescue-buzzwords-berlin?ref=http://judydba.tistory.com/203
How to Handle 1,000,000 Daily Users Without Using a Cache (RailsWayCon 2012)
http://www.slideshare.net/wooga/how-to-handle-1000000-daily-users-without-using-a-cache-railswaycon-2012?ref=http://judydba.tistory.com/203

Redis, MongoDB 그리고 MySQL 과 함께하는 모바일 애플리케이션 서비스에서의 로그 수집과 분석
http://www.slideshare.net/lqez/redis-mongodb-mysql

댓글 없음 :

댓글 쓰기