Presentation is loading. Please wait.

Presentation is loading. Please wait.

Remote Dictionary Server

Similar presentations


Presentation on theme: "Remote Dictionary Server"— Presentation transcript:

1 Remote Dictionary Server

2 overview key – value 메모리 저장소
string, set & sorted set, list, hash (다양한 data type 지원) key: String -> value: String key: String -> value: set key: String -> value: sorted set (score를 줄 수있다) key: String -> value: list key: String -> value: hash

3 data structure entries에 앞에 말한 data type형식으로 데이타가 저장됩니다. 사진 출처 : 한 서버당 hashTable 두개가 한쌍인 구조, 16개 (DB에서 database라고 생각하면 될듯) hashTable이 두개인 이유는 rehash, resize 처리할 때 무정지를 위함

4 data structure (string)
하나의 key에는 하나의 data type만~!! Hello World mykey

5 data structure (list) ziplist구조로 저장되겠지만 이해를 위해 linkedlist구조로 표시 mylist
Hello World ziplist구조로 저장되겠지만 이해를 위해 linkedlist구조로 표시

6 data structure ziplist? zipmap?
등장 배경 : list, map 자료구조에서 node를 연결하는 pointer가 필요함. data크기는 1byte인데 pointer가 8byte인 배보다 배꼽이 더 큰 상황 발생

7 data structure max를 넘으면 어떻게하냐? SO? 최악의 경우 모든 value header를 변경 해야 하므로
list-max-ziplist-entries (default: 1024개) list-max-ziplist-value (default: 32byte) max를 넘으면 어떻게하냐? ziplist였던 구조가 일반적인 linked-list구조로 변환

8 CRC16(“mykey”)/ number_slot
cluster 예제 slot의 개수=10 CRC16(“mykey”)/ number_slot mykey 3

9 cluster(gossip) 출처 :

10 cluster(gossip) 자신과 연결된 node중 임의로 정해서 ping/pong, gossip 매초 실행 잘 살고 있냐?
잘 살고 있다. 옆집 김씨는 건강하고, 아랫집 이씨는 어젯밤에 죽었더라. 아….그랬구나…

11 cluster cluster 설정 시 기록하는 내용 재시작시 아래 설정파일 load~!!

12 replication slave에서도 query 가능 replication 주기는 master의 save config로 조정
redis :6379> lpush mylist "Hello sydney" (integer) 1 redis :6379> lpush mylist "Hello seoul" (integer) 2 redis :6379> lpush mylist "Hello tokyo" (integer) 3 redis :6379> lpush mylist "Hello hongkong" (integer) 4 redis :6379> lrange mylist ) "Hello hongkong" 2) "Hello tokyo" 3) "Hello seoul" 4) "Hello sydney" redis :6379> connect (empty list or set) redis :6379> slaveof OK redis :6379> slave에서도 query 가능 replication 주기는 master의 save config로 조정 또는 ‘sync’ query 로 조정 마스터의 rdb 파일을 slave로 복사하고 slave에서는 그 파일을 load 참조 :

13 persistence AOF? RDB? snapshot 을 기록하느냐, query log를 기록하느냐 차이 RDB 설정
config 파일 [save] [changes] - 여러 개 설정 가능 AOF 설정 appendonly yes appendfsync always appendfsync everysec (default) option appendfsync no

14 client dummy client smart client 하나의 client는 하나의 서버와 연결. default
1. Client => A: GET foo 2. A => Client: -MOVED :6391 3. Client => B: GET foo 4. B => Client: "bar" default smart client client가 일정 간격으로 서버의 hash slot 정보를 가져옴 하나의 client가 모든 server와 connection이 이루어져있음 출처 :

15 think… cluster 구성 시 데이터가 균등하게 들어 갈수 있는 방법
cluster, replication 구성 후 auto-failover 방법 update 도중 장애 발생시 복구 방법 모니터링 페이지 개발

16 reference http://redis.io


Download ppt "Remote Dictionary Server"

Similar presentations


Ads by Google