2. About Me
Kris jeong(정경석)
이것이 레디스다(2013)
레디스 2.6에 대한 활용서적
개발 경력 15년.
웹 서비스 개발.
메시징 서버 개발.
추천 서비스 개발.
다양한 NoSQL 활용 연구중
http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8968480591
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
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. 지원 데이터 타입
문자열 데이터
키
값
{
"product": {
"id": "2951",
"name": "testing 01",
"options": {
"color": "red"
},
"quantity": 4
}
user:1:cart_info
}
※ Up to 512MB
12. 지원 데이터 타입 (cont.)
해시 데이터
키
필드
값
name
min damage
13
max damage
20
durability
32/50
price
item:1:info
bastard sword
3500
새로운 필드와 값 추가
durability
31/50
13. 지원 데이터 타입 (cont.)
해시 데이터
키
필드
값
name
min damage
item:1:info
bastard sword
13
max damage
20
durability
31/50
32/50
price
3500
14. 지원 데이터 타입 (cont.)
리스트 데이터
키
user:1:messag
e
요소
hi~
how r you.
bye.
새로운 요소 추가
15. 지원 데이터 타입 (cont.)
리스트 데이터
키
user:1:messag
e
요소
hi~
how r you.
bye.
16. 지원 데이터 타입 (cont.)
셋 데이터
kris
mike
frank
user:1:friend
martin
tom
새로운 요소 추가
chris
17. 지원 데이터 타입 (cont.)
셋 데이터
kris
mike
user:1:friend
frank
martin
tom
chris
18. 지원 데이터 타입 (cont.)
정렬된 셋 데이터
가중치
키
값
1
91
mike
200
frank
250
martin
251
user:ranking
kris
tom
새로운 가중치와 값 추가
220
chris
19. 지원 데이터 타입 (cont.)
정렬된 셋 데이터
키
가중치
값
1
91
user:ranking
kris
mike
200
frank
220
250
chris
martin
250
251
martin
tom
251
tom
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. 특징 – AOF(Append Only File)
Redis instance
Command
logging
Redis data
appendonly.aof
데이터 저장/수정 명령
Redis client
레디스 AOF에 대한 고려사항
적당한 디스크 용량과 IO속도를 보장해야 함.
레디스를 재시작할때 RDB보다 느리게 시작됨.
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
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. 샤딩 - 수직
● 데이터 스키마를 기준으로 샤딩
User info
Content
Shard 1
Shard 2
Master Node
Master Node
Slave Node
Slave Node
Slave Node
Slave Node
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. 샤딩 – 레디스 클라이언트 사용
Shard 1
Shard N
…
읽기/쓰기
Sharding Calc
읽기/쓰기
Redis client
레디스 샤딩 사용시 고려사항
레디스는 서버측 샤딩을 지원하지 않으므로 클라이언트가 구현.
대부분의 레디스 클라이언트는 클라이언트측 샤딩을 지원.
장비 증설/제거시 재 샤딩을 위한 전략 수립 필요
29. 활용 사례
10억 사용자에 대한 실시간 PV/UV
일간 로그인 사용자 수 계산
주간 로그인 사용자 수 계산
일주일간 한번이라도 로그인한 사용자 수 계산
실시간 인기 게시물 목록 구하기.
클릭 수 기준 인기 게시물 목록
댓글 수 기준 인기 게시물 목록
실시간 게임 랭킹
점수 기준 Top 10 랭커 목록
최근 접속 사용자 목록