Redis basicandroadmap

Preview:

Citation preview

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.