Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
이것이 레디스다
- 특징과 활용사례
About Me
 Kris jeong(정경석)
 이것이 레디스다(2013)
 레디스 2.6에 대한 활용서적

 개발 경력 15년.
 웹 서비스 개발.
 메시징 서버 개발.
 추천 서비스 개발.

 다양한 ...
레디스란?
 레디스는 In-Memory Database

 다양한 데이터 타입 지원
 영구 저장소 지원
 키-값 모델 NoSQL
IMDB(In-Memory DB)
디스크 기반 저장소

메모리 기반 저장소

Query Engine

Query Engine

속도

Storage
Manager

Memory(Cache)

Disk

Memory

데...
레디스는 캐시 서버인가?
레디스는 캐시 서버가 아닌 저장소
하지만 캐시 서버로 활용 가능
저장소 기능을 Off하면 됨.
설치 가능한 운영체제

https://github.com/MSOpenTech/redis
설치와 테스트
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xvf redis-stable.tar.gz
$ cd redis-stable
$ make
…
…
don...
특징
무지 빠르다 (TPS)
$ ./src/redis-benchmark --csv -d 1024
"PING_INLINE","34602.07"
"PING_BULK","35971.22"
"SET","35211.27"
"GET",...
특징 - expire
 지정된 시간 후에 만료
 expire user:212:cart 259200

초 단위 만료 Countdown

It will be expired 3 days later.

 만료 시간 지정
...
지원 데이터 타입
 문자열 데이터
키

값
{
"product": {
"id": "2951",
"name": "testing 01",
"options": {
"color": "red"
},
"quantity": 4
}...
지원 데이터 타입 (cont.)
 해시 데이터
키

필드

값

name
min damage

13

max damage

20

durability

32/50

price

item:1:info

bastard s...
지원 데이터 타입 (cont.)
 해시 데이터
키

필드

값

name
min damage
item:1:info

bastard sword
13

max damage

20

durability

31/50
32/5...
지원 데이터 타입 (cont.)
 리스트 데이터
키
user:1:messag
e

요소

hi~

how r you.

bye.

새로운 요소 추가
지원 데이터 타입 (cont.)
 리스트 데이터
키
user:1:messag
e

요소

hi~

how r you.

bye.
지원 데이터 타입 (cont.)
 셋 데이터

kris
mike
frank

user:1:friend

martin

tom

새로운 요소 추가
chris
지원 데이터 타입 (cont.)
 셋 데이터

kris
mike
user:1:friend

frank
martin

tom
chris
지원 데이터 타입 (cont.)
 정렬된 셋 데이터
가중치

키

값

1
91

mike

200

frank

250

martin

251

user:ranking

kris

tom

새로운 가중치와 값 추가
...
지원 데이터 타입 (cont.)
 정렬된 셋 데이터
키

가중치

값

1
91

user:ranking

kris
mike

200

frank

220
250

chris
martin

250
251

martin...
특징 – RDB(Snapshot)
Redis instance

Redis data

Data dump
to disk

Dump file
(Redis.rdb)

Snapshot이벤트 발생
레디스 snapshot 사용시 고...
특징 – AOF(Append Only File)
Redis instance
Command
logging

Redis data

appendonly.aof

데이터 저장/수정 명령
Redis client

레디스 AOF에...
복제 – Single slave
Redis cluster

Master Node

Slave Node

Replication
key1

test value

set key1 ‘test value’ key1

set ke...
복제 – Multiple slave
Redis cluster
Slave Node 1

Replication
Master Node

Slave Node 2

Slave Node 3

읽기

쓰기
Redis client
복제 – Multiple slave (cont.)
Redis cluster
1st Replication
Master Node

Slave Node 1
2nd Replication

Slave Node 2

Slave N...
샤딩 – 범위 지정
● 데이터 범위를 기준으로 샤딩
User Key 1 ~ 100
User Key 1~50

User Key 51~100

Shard 1

Shard 2

Master Node

Master Node

...
샤딩 - 수직
● 데이터 스키마를 기준으로 샤딩
User info

Content

Shard 1

Shard 2

Master Node

Master Node

Slave Node

Slave Node

Slave N...
샤딩 - 해싱
● 키의 해시값을 기준으로 샤딩
User Key 1 ~ 100
Key % Number of Shard(Key % 2)

Shard 1

Shard 2

Master Node

Master Node

Sla...
샤딩 – 레디스 클라이언트 사용
Shard 1

Shard N
…

읽기/쓰기

Sharding Calc

읽기/쓰기

Redis client

레디스 샤딩 사용시 고려사항
 레디스는 서버측 샤딩을 지원하지 않으므로 ...
활용 사례
10억 사용자에 대한 실시간 PV/UV
 일간 로그인 사용자 수 계산
 주간 로그인 사용자 수 계산
 일주일간 한번이라도 로그인한 사용자 수 계산

실시간 인기 게시물 목록 구하기.
 클릭 수 기준 인...
데모
Prochain SlideShare
Chargement dans…5
×

이것이 레디스다.

20 800 vues

Publié le

책 "이것이 레디스다"에 서술된 내용을 정리하여 간단한 슬라이드로 만들었습니다.

참고하세요.

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

이것이 레디스다.

  1. 1. 이것이 레디스다 - 특징과 활용사례
  2. 2. About Me  Kris jeong(정경석)  이것이 레디스다(2013)  레디스 2.6에 대한 활용서적  개발 경력 15년.  웹 서비스 개발.  메시징 서버 개발.  추천 서비스 개발.  다양한 NoSQL 활용 연구중 http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8968480591
  3. 3. 레디스란?  레디스는 In-Memory Database  다양한 데이터 타입 지원  영구 저장소 지원  키-값 모델 NoSQL
  4. 4. IMDB(In-Memory DB) 디스크 기반 저장소 메모리 기반 저장소 Query Engine Query Engine 속도 Storage Manager Memory(Cache) Disk Memory 데이터 내구성 Disk is optional Disk
  5. 5. 레디스는 캐시 서버인가? 레디스는 캐시 서버가 아닌 저장소 하지만 캐시 서버로 활용 가능 저장소 기능을 Off하면 됨.
  6. 6. 설치 가능한 운영체제 https://github.com/MSOpenTech/redis
  7. 7. 설치와 테스트 $ wget http://download.redis.io/redis-stable.tar.gz $ tar xvf redis-stable.tar.gz $ cd redis-stable $ make … … done. $ make test ※ CentOS 6.4 64bit
  8. 8. 특징
  9. 9. 무지 빠르다 (TPS) $ ./src/redis-benchmark --csv -d 1024 "PING_INLINE","34602.07" "PING_BULK","35971.22" "SET","35211.27" "GET","31347.96" … "LPUSH (needed to benchmark LRANGE)","32467.53" "LRANGE_100 (first 100 elements)","4714.76" "LRANGE_300 (first 300 elements)","1605.91" "LRANGE_500 (first 450 elements)","1030.93" "LRANGE_600 (first 600 elements)","735.13" "MSET (10 keys)","22471.91" ※ CentOS 6.4 64bit, Core i5 3337U@1.8Gz
  10. 10. 특징 - expire  지정된 시간 후에 만료  expire user:212:cart 259200 초 단위 만료 Countdown It will be expired 3 days later.  만료 시간 지정  expireat user:212:item:sward 1388534400 It will be expired 2014/01/01 유닉스 타임스탬프
  11. 11. 지원 데이터 타입  문자열 데이터 키 값 { "product": { "id": "2951", "name": "testing 01", "options": { "color": "red" }, "quantity": 4 } user:1:cart_info } ※ Up to 512MB
  12. 12. 지원 데이터 타입 (cont.)  해시 데이터 키 필드 값 name min damage 13 max damage 20 durability 32/50 price item:1:info bastard sword 3500 새로운 필드와 값 추가 durability 31/50
  13. 13. 지원 데이터 타입 (cont.)  해시 데이터 키 필드 값 name min damage item:1:info bastard sword 13 max damage 20 durability 31/50 32/50 price 3500
  14. 14. 지원 데이터 타입 (cont.)  리스트 데이터 키 user:1:messag e 요소 hi~ how r you. bye. 새로운 요소 추가
  15. 15. 지원 데이터 타입 (cont.)  리스트 데이터 키 user:1:messag e 요소 hi~ how r you. bye.
  16. 16. 지원 데이터 타입 (cont.)  셋 데이터 kris mike frank user:1:friend martin tom 새로운 요소 추가 chris
  17. 17. 지원 데이터 타입 (cont.)  셋 데이터 kris mike user:1:friend frank martin tom chris
  18. 18. 지원 데이터 타입 (cont.)  정렬된 셋 데이터 가중치 키 값 1 91 mike 200 frank 250 martin 251 user:ranking kris tom 새로운 가중치와 값 추가 220 chris
  19. 19. 지원 데이터 타입 (cont.)  정렬된 셋 데이터 키 가중치 값 1 91 user:ranking kris mike 200 frank 220 250 chris martin 250 251 martin tom 251 tom
  20. 20. 특징 – RDB(Snapshot) Redis instance Redis data Data dump to disk Dump file (Redis.rdb) Snapshot이벤트 발생 레디스 snapshot 사용시 고려사항  레디스에 저장되는 데이터 크기와 물리 메모리의 비율 고려  리눅스 운영체제의 vm.overcommit_memory=1 설정 확인  Swap/snapshot에 대한 DISK I/O가 많아질 수 있음.
  21. 21. 특징 – AOF(Append Only File) Redis instance Command logging Redis data appendonly.aof 데이터 저장/수정 명령 Redis client 레디스 AOF에 대한 고려사항  적당한 디스크 용량과 IO속도를 보장해야 함.  레디스를 재시작할때 RDB보다 느리게 시작됨.
  22. 22. 복제 – Single slave Redis cluster Master Node Slave Node Replication key1 test value set key1 ‘test value’ key1 set key1 ‘test value’ Redis client test value
  23. 23. 복제 – Multiple slave Redis cluster Slave Node 1 Replication Master Node Slave Node 2 Slave Node 3 읽기 쓰기 Redis client
  24. 24. 복제 – Multiple slave (cont.) Redis cluster 1st Replication Master Node Slave Node 1 2nd Replication Slave Node 2 Slave Node 3 쓰기 Redis client Slave Node 4 읽기 Redis client
  25. 25. 샤딩 – 범위 지정 ● 데이터 범위를 기준으로 샤딩 User Key 1 ~ 100 User Key 1~50 User Key 51~100 Shard 1 Shard 2 Master Node Master Node Slave Node Slave Node Slave Node Slave Node
  26. 26. 샤딩 - 수직 ● 데이터 스키마를 기준으로 샤딩 User info Content Shard 1 Shard 2 Master Node Master Node Slave Node Slave Node Slave Node Slave Node
  27. 27. 샤딩 - 해싱 ● 키의 해시값을 기준으로 샤딩 User Key 1 ~ 100 Key % Number of Shard(Key % 2) Shard 1 Shard 2 Master Node Master Node Slave Node Slave Node Slave Node Slave Node
  28. 28. 샤딩 – 레디스 클라이언트 사용 Shard 1 Shard N … 읽기/쓰기 Sharding Calc 읽기/쓰기 Redis client 레디스 샤딩 사용시 고려사항  레디스는 서버측 샤딩을 지원하지 않으므로 클라이언트가 구현.  대부분의 레디스 클라이언트는 클라이언트측 샤딩을 지원.  장비 증설/제거시 재 샤딩을 위한 전략 수립 필요
  29. 29. 활용 사례 10억 사용자에 대한 실시간 PV/UV  일간 로그인 사용자 수 계산  주간 로그인 사용자 수 계산  일주일간 한번이라도 로그인한 사용자 수 계산 실시간 인기 게시물 목록 구하기.  클릭 수 기준 인기 게시물 목록  댓글 수 기준 인기 게시물 목록 실시간 게임 랭킹  점수 기준 Top 10 랭커 목록  최근 접속 사용자 목록
  30. 30. 데모

×