SlideShare a Scribd company logo
Redis 잘 쓰는 법(?)
charsyam@naver.com
오늘의 주제
Redis 잘 쓰는 법(?)
오늘의 주제
Redis 잘 쓰는 법(?)
저도 잘 쓰고 싶습니다만....
Redis 성능
초당 10~15만
get/set 가능
Redis 성능
초당 10~15만
get/set 가능
(cpu에 영향 받음)
Redis는!!!
Single Threaded
CaseStudy
가정
● 사용자 랭킹 별로 대전 상대를 추천
● 점수별로 등급이 존재
요구사항
● 사용자 랭킹 별로 대전 상대를 추천
● 그러나 전체 등급에서 골로루 유저들을 뽑아서
추천해줘야 한다.
Redis를 쓴다면?
어떤 Collection을 써야할까요?
Redis를 쓴다면?
어떤 Collection을 써야할까요?
Sorted Set
Redis를 쓴다면?
ZRANGEBYSCORE
ZRANGEBYSCORE를 쓴다면?
1. 현재 유저 score를 모두 가져온다.
2. 등급별로 유저들을 나눈 다음 각 등급별로 유저들을
적절히 매칭 상대로 추가해준다.
ZRANGEBYSCORE
잘 동작할까요?
ZRANGEBYSCORE
Sorted Set에 100명이 있다면?
Sorted Set에 10000명이 있다면?
Sorted Set에 1000000명이 있다면?
그러면 어떻게?
1. 여러 개의 적절한 개수를 가지는 여러개의 Sorted Set
으로 나누거나
2. 여러 개의 나눌 수 있는 커맨드로 각 구간 별로 부르기
Redis Failover
Redis Failover
Sentinel?
Redis Failover
Sentinel?
기본적으로 Pub/Sub이 가능해야 함
Redis Failover
좀 있어보이는 방법
Redis Failover
Coordinator류의 사용
Zookeeper #1
Redis #1
Redis #2
Zookeeper
Current Redis: Redis #1
Server #1
Server #2
Server #3
User
or
Event
Zookeeper #2
Redis #1
Redis #2
Zookeeper
Current Redis: Redis #2
Server #1
Server #2
Server #3
Change Zookeeper value User
or
Event
Zookeeper #3
Redis #1
Redis #2
Zookeeper
Current Redis: Redis #2
Server #1
Server #2
Server #3
Event : Zookeeper send
Current Redis is changed
User
or
Event
Zookeeper #4
Redis #1
Redis #2
Zookeeper
Current Redis: Redis #2
Server #1
Server #2
Server #3
Zookeeper 로 부터읽어감
User
or
Event
Spring Config #1
Redis #1
Redis #2
Spring Config
Current Redis: Redis #1
Server #1
Server #2
Server #3
User
Spring Config #2
Redis #1
Redis #2
Spring Config
Current Redis: Redis #2
Server #1
Server #2
Server #3
User
Change Spring Config value
Spring Config #3
Redis #1
Redis #2
Spring Config
Current Redis: Redis #2
Server #1
Server #2
Server #3
User
Event(User Send)
Current Redis is changed
Spring Config #4
Redis #1
Redis #2
Spring Config
Current Redis: Redis #2
Server #1
Server #2
Server #3
User
Event(User Send)
Current Redis is changed
Redis Failover
그럼 저런 기능이
없다면?
Redis Failover
DNS or VIP
DNS or VIP #1
Redis #1
Redis #2
Server #1
Server #2
Server #3
Connect to :
account-service-redis.service.net.
account-service-redis.service.net
DNS or VIP #2
Redis #2
Server #1
Server #2
Server #3
Connect to :
account-service-redis.service.net. Redis #1 장애
DNS or VIP #3
Redis #2
Server #1
Server #2
Server #3
Connect to :
account-service-redis.service.net.
DNS나 VIP를 Redis #2가
account-service-redis.service.net 을 가지도록 전환
account-service-redis.service.net
DNS or VIP #4
Redis #2
Server #1
Server #2
Server #3
Connect to :
account-service-redis.service.net.
클라이언트 측면에서 바뀌는 것이 하나도 없음.
account-service-redis.service.net
Monitoring
Monitoring Factors
1. 메모리 RSS(Resident set size) 가 used memory 보다
중요.
2. CPU 사용률도 중요함.
3. Swap 이 생기면 안됨.
Current Connection 수의 변화
1. 계속 많은 수가 Connection 을 맺고 끊으면 성능에 큰
영향을 미침(한번 맺고, 계속 재활용해야함)
2. 반대로, CPU 사용량이 높거나 해서 timeout으로
컨넥션이 자주 바뀌는 경우도 발생
a. 2번으로 인해서 1번이 초래해서 성능이 더
안좋아지는 경우도 자주 발생
CPU 사용률이 높다면(1)
1. 정말 트래픽이 많은 경우
a. CPU에 영향을 받으므로 더 빠른 CPU를 쓰는 것도
방법
2. 특정 key 연산등으로 hot key가 발생하는 경우
a. hot key가 성능을 떨어뜨리는 것이 아니라,
과도하게 해당 키의 서버에 과도하게 트래픽이
몰리게 되는 경우
CPU 사용률이 높다면(2)
1. Monitor 명령을 사용하여 특정키의 패턴이 많은지
샘플링
2. CPU 사용량이 너무 높으면 도리어 장애를 일으키는
요인이 되기도 함.
감사합니다.

More Related Content

PDF
Scalable webservice
PDF
Internet Scale Service Arichitecture
PDF
Massive service basic
PDF
Redis From 2.8 to 4.x(unstable)
PDF
How to build massive service for advance
PDF
webservice scaling for newbie
PDF
Webservice cache strategy
PDF
Redis acc 2015
Scalable webservice
Internet Scale Service Arichitecture
Massive service basic
Redis From 2.8 to 4.x(unstable)
How to build massive service for advance
webservice scaling for newbie
Webservice cache strategy
Redis acc 2015

What's hot (20)

PDF
서버인프라 구축 입문 basis of composing server and infra
PDF
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
PPT
서버/인프라를 지탱하는 기술
PDF
Redis on AWS
PDF
[2B5]nBase-ARC Redis Cluster
PPSX
무정지&무점검 서버 개발과 운영 사례
PPTX
이것이 레디스다.
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PDF
Dynamodb 삽질기
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PDF
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
PPTX
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
PDF
텀 프로젝트에서 제품 프로젝트로 - 성준영님
PDF
Apache kafka intro_20150313_springloops
PDF
Cache governance
PDF
How to name a cache key
PDF
[112]clova platform 인공지능을 엮는 기술
PPTX
웹서버와 프라우드넷 서버간 상호작용 가이드
PDF
[233]멀티테넌트하둡클러스터 남경완
PPTX
라이브 서비스를 위한 게임 서버 구성
서버인프라 구축 입문 basis of composing server and infra
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
서버/인프라를 지탱하는 기술
Redis on AWS
[2B5]nBase-ARC Redis Cluster
무정지&무점검 서버 개발과 운영 사례
이것이 레디스다.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Dynamodb 삽질기
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
텀 프로젝트에서 제품 프로젝트로 - 성준영님
Apache kafka intro_20150313_springloops
Cache governance
How to name a cache key
[112]clova platform 인공지능을 엮는 기술
웹서버와 프라우드넷 서버간 상호작용 가이드
[233]멀티테넌트하둡클러스터 남경완
라이브 서비스를 위한 게임 서버 구성
Ad

Similar to How to use redis well (20)

PDF
Redis 2017
PDF
PPTX
Backend Master | 2.1.4 Cache - Redis Clustering part.1
PPTX
Redis
PDF
Redis Active 전환 조사를 위한 자료 조사 및 상용화 방안 확인
PDF
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
PPT
Redis Overview
PDF
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
PDF
Redis basicandroadmap
PDF
닷넷프레임워크에서 Redis 사용하기
PDF
Redis edu 3
PDF
Redis trouble shooting
PPTX
Ndc14 분산 서버 구축의 ABC
PDF
Redis From 2.8 to 4.x
PDF
스프링 데이터 레디스 엘라스틱 발표자료
PDF
[오픈소스컨설팅]파일럿진행예제 on AWS
PDF
[PYCON Korea 2018] Python Application Server for Recommender System
PDF
[PYCON Korea 2018] Python Application Server for Recommender System
PPTX
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
PPTX
Scalable web architecture and distributed systems
 
Redis 2017
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Redis
Redis Active 전환 조사를 위한 자료 조사 및 상용화 방안 확인
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Redis Overview
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
Redis basicandroadmap
닷넷프레임워크에서 Redis 사용하기
Redis edu 3
Redis trouble shooting
Ndc14 분산 서버 구축의 ABC
Redis From 2.8 to 4.x
스프링 데이터 레디스 엘라스틱 발표자료
[오픈소스컨설팅]파일럿진행예제 on AWS
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
Scalable web architecture and distributed systems
 
Ad

More from DaeMyung Kang (20)

PPTX
Count min sketch
PDF
Ansible
PDF
Why GUID is needed
PPTX
The easiest consistent hashing
PDF
Integration between Filebeat and logstash
PDF
Data Engineering 101
PDF
How To Become Better Engineer
PPTX
Kafka timestamp offset_final
PPTX
Kafka timestamp offset
PPTX
Data pipeline and data lake
PDF
Redis acl
PDF
Coffee store
PDF
Number system
PDF
Bloomfilter
PDF
Soma search
PDF
Using spark data frame for sql
PPTX
How to study
PDF
Internet scaleservice
PDF
Random 111203223949-phpapp02
PDF
Better softwareengineer han
Count min sketch
Ansible
Why GUID is needed
The easiest consistent hashing
Integration between Filebeat and logstash
Data Engineering 101
How To Become Better Engineer
Kafka timestamp offset_final
Kafka timestamp offset
Data pipeline and data lake
Redis acl
Coffee store
Number system
Bloomfilter
Soma search
Using spark data frame for sql
How to study
Internet scaleservice
Random 111203223949-phpapp02
Better softwareengineer han

How to use redis well