Redis basicandroadmap
-
Upload
dae-myung-kang -
Category
Documents
-
view
1.027 -
download
3
Transcript of Redis basicandroadmap
Redis Basic and RoadMap
Clark.kang
Redis Basic
Redis Basic
Collections
Redis Basic
Collections
Single Thread
Redis Basic
Collections
Single Thread
Memory Issue
Collections
Collections - String - list - Set - Sorted Set - Hash
Dict #1
Dict #2
SkipList
Single Thread
Single Thread
- 한번에 하나의 명령만 처리된다.
Single Thread
- 한번에 하나의 명령만 처리된다. - 즉 한번에 오래도는 명령은 쓰면 안됨
Single Thread
- 한번에 하나의 명령만 처리된다. - 즉 한번에 오래도는 명령은 쓰면 안됨 - O(n) 계열(keys, flushall, del)
Keys
- 현재 DB의 모든 키를 가져온다. - 우리 서버에서 쓰면 바로 Timeout
Scan
- 2.8 부터 가능 - 일정 양만 fetch 하는 걸로 전체를 스캔 가능
Scan
Del
- 일반 Key는 별 문제 없음 - 꽤 많은 개수가 들어있는 Collection 을 지우면… 역시 일정시간 Hang - 백만개 지우면 1초 정도 멈춤
RDB/AOF
- persist - 두 개가 서로 관련은 없음
- RDB 생성을 위해서 무조건 Fork() 이 때, 메모리를 추가로 많이 쓸 수 있음
RDB/AOF
- RDB는 현 시점의 메모리 덤프 - AOF는 매 틱마다 디스크에 수행한 명령을 기록함.
Replication
- 슬레이브 접속시 무조건 Master는 RDB 생성 - 그 뒤에 차이 나는 부분을 보냄
- 슬레이브가 계속 붙었다 떨어지면 Master의 로드가 높아짐.
Memory Issues
- 메모리 관리가 Jemalloc에 의존적
- 그래서 Jemalloc 최신 버전 3.6.0 을 쓰는 2.8.13 이후를 사용하는게 좋음.
Memory Issues
- Jemalloc에 의존적이라 메모리 파편화의 문제가 심각할 수 있음.
Redis Roadmap
큰 변화
Redis 2.8
Scan
Partial Sync
Partial Sync
- 아주 잠시 마스터와 접속이 끊겼는데도, 새로 받으면 비효율적임. - 지정된 버퍼 사이즈 이하로 변경이 있으면, 변경분만 받음.
Partial Sync
- 그런데, Redis Replication 버퍼에 PING/PONG 등이 쌓여서, 결국 시간만 지나면 변화가 없어도 버퍼가 꽉참.
Redis 3.0
Diskless Replication
Cluster
Diskless Replication
- 매 슬레이브 접속시 RDB를 만들어서 디스크로 덤프함… 디스크 쓰기가 생기니… 이걸 그냥 스트리밍 상태로 만들어서 전송
Cluster #1
- Redis Cluster
- 최소 3대 이상의 마스터가 필요하지만, 제대로는 3M – 3S가 필요함.
Cluster #2
- 16384의 내부 슬롯이 존재
- Sentinel 없이 마스터 노드끼리 통신해서 Master 장애시 자동으로 Slave를 Master로 승격시킴
Cluster #3
- Library 에 크게 의존함
- Java/Ruby/Python 등의 클러스터 지원 라이브러리가 존재(Jedis)
Cluster #4
Cluster #5
Cluster #6
Cluster #7
Cluster #8
Cluster #9
- Library에서 해당 슬롯의 위치를 캐시해야 효율적임.
Cluster #10
- 클러스터의 부하 분산은 slot 단위로 migration 명령을 이용함.
- 자동이 아니라 매뉴얼임.
Cluster #11
- 아직 큰곳에서 쓰는 레퍼런스가 없음
Redis 3.2
- GEO(구현 완료)
- 기타 등등?(여기에 큰 이슈가…)
GEO
- GEO 커맨드 지원
기타 등등
-BloomFilter
-sds 메모리 줄이는 것이 있음. sds header 사이즈가 가변으로…
-Multi DC Supporting?
Thank you.