SlideShare ist ein Scribd-Unternehmen logo
1 von 30
이것이 레디스다
- 특징과 활용사례
About Me
 Kris jeong(정경석)
 이것이 레디스다(2013)
 레디스 2.6에 대한 활용서적

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

 다양한 NoSQL 활용 연구중
http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8968480591
레디스란?
 레디스는 In-Memory Database

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

메모리 기반 저장소

Query Engine

Query Engine

속도

Storage
Manager

Memory(Cache)

Disk

Memory

데이터 내구성

Disk is optional

Disk
레디스는 캐시 서버인가?
레디스는 캐시 서버가 아닌 저장소
하지만 캐시 서버로 활용 가능
저장소 기능을 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
…
…
done.
$ make test

※ CentOS 6.4 64bit
특징
무지 빠르다 (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
특징 - 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

유닉스 타임스탬프
지원 데이터 타입
 문자열 데이터
키

값
{
"product": {
"id": "2951",
"name": "testing 01",
"options": {
"color": "red"
},
"quantity": 4
}

user:1:cart_info

}

※ Up to 512MB
지원 데이터 타입 (cont.)
 해시 데이터
키

필드

값

name
min damage

13

max damage

20

durability

32/50

price

item:1:info

bastard sword

3500

새로운 필드와 값 추가
durability

31/50
지원 데이터 타입 (cont.)
 해시 데이터
키

필드

값

name
min damage
item:1:info

bastard sword
13

max damage

20

durability

31/50
32/50

price

3500
지원 데이터 타입 (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

새로운 가중치와 값 추가
220

chris
지원 데이터 타입 (cont.)
 정렬된 셋 데이터
키

가중치

값

1
91

user:ranking

kris
mike

200

frank

220
250

chris
martin

250
251

martin
tom

251

tom
특징 – 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가 많아질 수 있음.
특징 – AOF(Append Only File)
Redis instance
Command
logging

Redis data

appendonly.aof

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

레디스 AOF에 대한 고려사항
 적당한 디스크 용량과 IO속도를 보장해야 함.
 레디스를 재시작할때 RDB보다 느리게 시작됨.
복제 – 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
복제 – 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 Node 3

쓰기
Redis client

Slave Node 4

읽기
Redis client
샤딩 – 범위 지정
● 데이터 범위를 기준으로 샤딩
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
샤딩 - 수직
● 데이터 스키마를 기준으로 샤딩
User info

Content

Shard 1

Shard 2

Master Node

Master Node

Slave Node

Slave Node

Slave Node

Slave Node
샤딩 - 해싱
● 키의 해시값을 기준으로 샤딩
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
샤딩 – 레디스 클라이언트 사용
Shard 1

Shard N
…

읽기/쓰기

Sharding Calc

읽기/쓰기

Redis client

레디스 샤딩 사용시 고려사항
 레디스는 서버측 샤딩을 지원하지 않으므로 클라이언트가 구현.
 대부분의 레디스 클라이언트는 클라이언트측 샤딩을 지원.
 장비 증설/제거시 재 샤딩을 위한 전략 수립 필요
활용 사례
10억 사용자에 대한 실시간 PV/UV
 일간 로그인 사용자 수 계산
 주간 로그인 사용자 수 계산
 일주일간 한번이라도 로그인한 사용자 수 계산

실시간 인기 게시물 목록 구하기.
 클릭 수 기준 인기 게시물 목록
 댓글 수 기준 인기 게시물 목록

실시간 게임 랭킹
 점수 기준 Top 10 랭커 목록

 최근 접속 사용자 목록
데모

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 
基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします
 
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
 
複数サーバでセッションを共有する冴えたやりかた
複数サーバでセッションを共有する冴えたやりかた複数サーバでセッションを共有する冴えたやりかた
複数サーバでセッションを共有する冴えたやりかた
 
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
 

Ähnlich wie 이것이 레디스다.

게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
kalzas
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
Yong-uk Choe
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 

Ähnlich wie 이것이 레디스다. (20)

게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
 
Redis acc 2015
Redis acc 2015Redis acc 2015
Redis acc 2015
 
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
 
Redis 2017
Redis 2017Redis 2017
Redis 2017
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
 
steeleye Replication
steeleye Replication steeleye Replication
steeleye Replication
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
20130716 AWS Meister re:Generate - Amazon Redshift (Korean)
20130716 AWS Meister re:Generate - Amazon Redshift (Korean)20130716 AWS Meister re:Generate - Amazon Redshift (Korean)
20130716 AWS Meister re:Generate - Amazon Redshift (Korean)
 
Redis
RedisRedis
Redis
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Pivot3 tech overview_201704
Pivot3 tech overview_201704Pivot3 tech overview_201704
Pivot3 tech overview_201704
 
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
[Pgday.Seoul 2019] AppOS 고성능 I/O 확장 모듈로 성능 10배 향상시키기
 
SoftLayer 서비스 설명 3차 - 스토리지
SoftLayer 서비스 설명 3차 - 스토리지SoftLayer 서비스 설명 3차 - 스토리지
SoftLayer 서비스 설명 3차 - 스토리지
 

Mehr von Kris Jeong (6)

Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략
Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략
Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015
 
Redis data design by usecase
Redis data design by usecaseRedis data design by usecase
Redis data design by usecase
 
This is redis - feature and usecase
This is redis - feature and usecaseThis is redis - feature and usecase
This is redis - feature and usecase
 
Active MQ
Active MQActive MQ
Active MQ
 
REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redis
 

Kürzlich hochgeladen

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Kürzlich hochgeladen (7)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

이것이 레디스다.

  • 2. About Me  Kris jeong(정경석)  이것이 레디스다(2013)  레디스 2.6에 대한 활용서적  개발 경력 15년.  웹 서비스 개발.  메시징 서버 개발.  추천 서비스 개발.  다양한 NoSQL 활용 연구중 http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8968480591
  • 3. 레디스란?  레디스는 In-Memory Database  다양한 데이터 타입 지원  영구 저장소 지원  키-값 모델 NoSQL
  • 4. IMDB(In-Memory DB) 디스크 기반 저장소 메모리 기반 저장소 Query Engine Query Engine 속도 Storage Manager Memory(Cache) Disk Memory 데이터 내구성 Disk is optional Disk
  • 5. 레디스는 캐시 서버인가? 레디스는 캐시 서버가 아닌 저장소 하지만 캐시 서버로 활용 가능 저장소 기능을 Off하면 됨.
  • 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
  • 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. 특징 - 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
  • 23. 복제 – Multiple slave Redis cluster Slave Node 1 Replication Master Node Slave Node 2 Slave Node 3 읽기 쓰기 Redis client
  • 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. 샤딩 – 범위 지정 ● 데이터 범위를 기준으로 샤딩 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 랭커 목록  최근 접속 사용자 목록