Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
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.
Redis basicandroadmap
Redis basicandroadmap
Redis basicandroadmap
Próxima SlideShare
Cargando en…5
×

Redis basicandroadmap

  • Sé el primero en comentar

Redis basicandroadmap

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

×