SlideShare una empresa de Scribd logo
1 de 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 랭커 목록

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

Más contenido relacionado

La actualidad más candente

Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDBMongoDB
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3Angel Boy
 
MongoDB Sharding
MongoDB ShardingMongoDB Sharding
MongoDB ShardingRob Walters
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...Amazon Web Services Korea
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임흥배 최
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)MongoDB
 
Intro to Elasticsearch
Intro to ElasticsearchIntro to Elasticsearch
Intro to ElasticsearchClifford James
 
High performance and high availability proxies for MySQL
High performance and high availability proxies for MySQLHigh performance and high availability proxies for MySQL
High performance and high availability proxies for MySQLMydbops
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화NAVER D2
 
Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기JeongHun Byeon
 
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfJesmar Cannao'
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 

La actualidad más candente (20)

Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDB
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3
 
MongoDB Sharding
MongoDB ShardingMongoDB Sharding
MongoDB Sharding
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
Execution
ExecutionExecution
Execution
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)
 
Intro to Elasticsearch
Intro to ElasticsearchIntro to Elasticsearch
Intro to Elasticsearch
 
High performance and high availability proxies for MySQL
High performance and high availability proxies for MySQLHigh performance and high availability proxies for MySQL
High performance and high availability proxies for MySQL
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기Node.js API 서버 성능 개선기
Node.js API 서버 성능 개선기
 
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
 
Redis
RedisRedis
Redis
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 

Similar a 이것이 레디스다.

게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석smartstudy_official
 
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
[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...OpenStack Korea Community
 
Redis Overview
Redis OverviewRedis Overview
Redis Overviewkalzas
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)Amazon Web Services Korea
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
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)Amazon Web Services Korea
 
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
 
천만사용자를 위한 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 2020Amazon Web Services Korea
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
Pivot3 tech overview_201704
Pivot3 tech overview_201704Pivot3 tech overview_201704
Pivot3 tech overview_201704CDIT-HCI
 
[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배 향상시키기PgDay.Seoul
 
SoftLayer 서비스 설명 3차 - 스토리지
SoftLayer 서비스 설명 3차 - 스토리지SoftLayer 서비스 설명 3차 - 스토리지
SoftLayer 서비스 설명 3차 - 스토리지IBM Korea
 
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000Seoro Kim
 

Similar a 이것이 레디스다. (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)
 
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차 - 스토리지
 
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000
IBM Storage for AI - NVMe & Spectrum Scale 기술을 탑재한 ESS3000
 

Más de Kris Jeong

Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략
Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략
Soscon2017 오픈소스를 활용한 마이크로 서비스의 캐시 전략Kris Jeong
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Kris Jeong
 
Redis data design by usecase
Redis data design by usecaseRedis data design by usecase
Redis data design by usecaseKris Jeong
 
This is redis - feature and usecase
This is redis - feature and usecaseThis is redis - feature and usecase
This is redis - feature and usecaseKris Jeong
 
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 redisKris Jeong
 

Más de 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
 

이것이 레디스다.

  • 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 랭커 목록  최근 접속 사용자 목록