SlideShare a Scribd company logo
1 of 20
Download to read offline
표지, 목차, 간지
템플릿
© 2021 NeoClova Co.,LTD
Next Opensource Cloud Value
Redis
㈜네오클로바
Update : 2021. 2. 8
소개자료
표지, 목차, 간지
템플릿
© 2021 NeoClova Co.,LTD
목차
Ⅰ. Redis 1. Redis
2. Redis Engines Ranking
3. Redis 사용 사례
4. Redis Release Note
5. Redis Client
6. Data Types
7. Redis 구성안
8. Redis 구성 정리
© 2021 NeoClova Co.,LTD
3
데이터 저장소로 디스크가 아닌 메모리를 사용하는 인 메모리 키 값 데이터 구조 스토어
(REmote DIctionary Server)
Salvatore sanfilippo에 의해 개발되었으며 실시간 웹로그 애플리케이션을 MySQL로 개발하던 중 성능에
한계를 느껴 직접 Redis 개발
2009년 9월 버전 1.0(Master-Slave 구조 및 디스크 저장 기능 포함)을 시작으로 2018년 10월 버전
5.0(stream)까지 제공
데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크
에 저장하는 방법 제공
기본적으로 Key-value 저장 방식이지만, Lists, Sets, Sorted sets, Hashes, Streams 같은 다양한 저장 방식
제공
 Redis는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 애플
리케이션에서 널리 사용
1. Redis
© 2021 NeoClova Co.,LTD
4
전 세계 데이터 베이스 순위 7위의 Redis
DB-Engines Ranking
2. Redis Engines Ranking
© 2021 NeoClova Co.,LTD
5
전 세계 Key-Value Store 부분 1위의 Redis
DB-Engines Ranking of Key-value Stores
2. Redis Engines Ranking
© 2021 NeoClova Co.,LTD
6
이 외에도 Yahoo!, tumblr, Twitter, stackoverflow, Github, instagram. 등 수많은 사이트에서 사용
출처 : OSS 포털 - 공개SW 활용 성공사례 공개SW 활용 성공사례 123
3. Redis 사용 사례
© 2021 NeoClova Co.,LTD
7
• 2009년 9월 3일 Version 1.0:
Master-slave 기능, 디스크 저장 기능(save) 등.
• 2010년 1월 15일 Version 1.2:
AOF 기능 추가 등.
• 2010년 9월 3일 Version 2.0.0:
DISCARD, APPEND, SETEX, SUBSTR, BLPOP, BRPOP 등 19개의 새 명령을 추가 하고 성능개선과 버그 수정 등.
• 2011년 2월 23일 Version 2.2.0:
데이터 타입이 List와 set에서 값의 수가 적을 경우 그에 맞는 별도의 데이터 구조를 제공해서 메모리 절약
ZipList(Zip List of Lists, Zip List of ZSETS), IntSet(INTSET of SETS)
• 2011년 10월 15일 Version 2.4.0:
Ziplists, Zipmaps, Intsets Data Structure 도입으로 메모리 절약과 RDB 저장/로드 속도 개선 등.
• 2012년 10월 23일 Version 2.6.0:
2.4에서 만들어진 RDB, AOF 파일 2.6에서 읽을 수 없으며, 2.6 노드를 2.4의 slave로 연결할 수 있으나 2.4의 노드를 2.6에서
연결할 수 없음 등.
• 2013년 11월 22일 버전 2.8.0:
안정적인 알고리즘으로 재 구현한 Sentinel을 사용 가능 등
• 2015년 5월 1일 Verson 3.0.0:
Redis 클러스터 기능 제공 등
• 2017년 7월 Version 4.0.0GA:
Redis 기능을 확장하고 새로운 데이터 유형을 구현할 수 있는 모듈을 작성할 수 있음
• 2018년 10월 17일 Version 5.0:
스트림(로그 데이터를 처리하기 위해서 5.0에서 새로 도입된 데이터 타입): 데이터가 연속적으로 발생하고 기존에 데이터를
수정하지 않고 추가로 밸생시키는 데이터를 보관하고 처리하는데 적합한 데이터 구조
• 2019년 4월 30일 Version 6.0 GA:
SSL,ACL,RESP3, 클라이언트측 캐싱, Thread I/O, 복제본에 대한 디스크 없는 복제, 클러스터 지원(benchmark, cli, Disque,
Proxy )
Release Note
4. Redis Release Note
© 2021 NeoClova Co.,LTD
8
• HiRedis는 Salvatore가 만든 공식적 C Redis Client
• 레디스의 모든 명령과 Async mode, Pipelining,
Event Driven Programming 지원
• 클러스터를 관리하기 위한 명령은 실행할 수 있으나
클러스터를 지원하지 않음
HiRedis Client for C
• Java용 Redis Client
• 사용하기 쉬우며 Redis 명령어를 그대로 사용 가능
• Redis 4.0을 공식 지원하지 않음
(사용하는데는 문제 없음)
• Async 메소드를 제공하지 않아 Async mode를
사용할 수 없음
Jedis for Java
• Java용 Redis Client
• 레디스의 모든 명령과 Async mode, Pipelining,
Connection Pooling 지원
• Async mode 및 클러스터 지원
Lettuce for Java
• Java용 Redis Client
• Jedis나 Lettuce에 비교해서 사용하기 쉽지 않음
Jedis나 Lettuce는 Redis Server에 Connection하면
바로 명령(메소드)를 사용할 수 있으나 Redisson은
먼저 DataType에 맞는 메소드를 선택 해야 함
• Redis 명령과 Redisson 메소드 명이 대부분 다름
INCR -> getAtomicLong(), LPUSH -> addFirst(),
LRANGE -> readAll()
Redisson for Java
• C# 용 Redis Client
• Sync, Async 명령을 실행 할 수 있음
• Cluster 지원
StackExchange.Redis
• PHP 레디스 클라이언트
• Cluster 지원
Phpredis
5. Redis Client
© 2021 NeoClova Co.,LTD
9
Commands Version Syntax Description
DECR 1.0.0 key 1씩 감가, 신규이면 -1로 setting.
DECRBY 1.0.0 key decrement decrement만큼 감소. 신규이면 -decrement로 setting.
DEL 1.0.0 key [key ...] 데이터를 삭제
GET 1.0.0 key 데이터를 조회
GETSET 1.0.0 key value 기존 데이터를 조회하고 새 데이터를 저장
INCR 1.0.0 key 1씩 증가, 신규이면 1로 setting.
INCRBY 1.0.0 key increment increment만큼 증가. 신규이면 increment로 setting.
MGET 1.0.0 key [key ...] 여러개의 데이터를 한번에 조회
SET 1.0.0 key value [EX seconds] 데이터를 저장, key가 이미 있으면 덮어쓴다.
[PX milliseconds] [NX|XX]
SETNX 1.0.0 key value 지정한 key가 없을 경우에만 데이터를 저장
MSET 1.0.1 key value [key value ...] 여러개의 데이터를 한번에 저장
MSETNX 1.0.1 key value [key value ...] 지정한 key가 없을 경우에만, 여러개의 데이터를 한번에 저장
APPEND 2.0.0 key value 데이터를 추가, 지정한 key가 없으면 저장
SETEX 2.0.0 key seconds value 지정한 시간(초) 이후에 데이터 자동 삭제
GETBIT 2.2.0 key offset bit 값 조회
SETBIT 2.2.0 key offset value bit 값 조정
SETRANGE 2.2.0 key offset value 지정한 위치(offset)부터 데이터를 겹쳐쓴다
STRLEN 2.2.0 key 데이터의 바이트수를 리턴
GETRANGE 2.4.0 key start end 데이터의 일부 문자열을 조회
BITCOUNT 2.6.0 key [start end] 1인 bit 수를 센다
BITOP 2.6.0 key operation destkey key [key ...] bit 연산( AND, OR, XOR, NOT) 실행
INCRBYFLOAT 2.6.0 key increment 실수연산, increment만큼 증가. 신규이면 increment로 setting.
PSETEX 2.6.0 key milliseconds value 지정한 시간(밀리초) 이후에 데이터 자동 삭제
BITPOS 2.8.7 key bit [start [end]] 지정한 bit의 위치를 구한다
BITFIELD 3.2.0 key [GET type offset] [SET type offset value] [INCRBY Perform arbitrary bitfield integer operations on strings
Strings
6. Data Types
© 2021 NeoClova Co.,LTD
10
List
Commands Version Syntax Description
LPUSH 1.0.0 key value [value ...] 왼쪽에서 리스트의 오른쪽에 데이터를 저장
RPOP 1.0.0 key 리스트 오른쪽에서 데이터를 꺼내오고, 리스트에서는 삭제
LPOP 1.0.0 key 리스트 왼쪽에서 데이터를 꺼내오고, 리스트에서는 삭제
RPUSH 1.0.0 key value [value ...] 오른쪽에서 리스트의 왼쪽에 데이터를 저장
LRANGE 1.0.0 key start stop 인덱스로 범위를 지정해서 리스트 조회
LLEN 1.0.0 key 리스트에서 데이터의 총 갯수를 조회
LINDEX 1.0.0 key index 인덱스로 특정 위치의 데이터를 조회
LSET 1.0.0 key index value 인덱스로 특정 위치의 값을 바꿈
LREM 1.0.0 key count value 값을 지정해서 삭제
LTRIM 1.0.0 key start stop 인덱스로 지정한 범위 밖의 값들을 삭제
RPOPLPUSH 1.2.0 key src_key dest_key RPOP + LPUSH
BLPOP 2.0.0 key [key ...] timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 LPOP 실행
BRPOP 2.0.0 key [key ...] timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 RPOP 실행
BRPOPLPUSH 2.2.0 src_key dest_key timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 RPOPLPUSH 실행
LINSERT 2.2.0 key BEFORE|AFTER pivot value 지정한 값 앞/뒤에 새 값 저장
LPUSHX 2.2.0 key value 기존에 리스트가 있을 경우에만 LPUSH 실행
RPUSHX 2.2.0 key value 기존에 리스트가 있을 경우에만 RPUSH 실행
6. Data Types
© 2021 NeoClova Co.,LTD
11
Sets
Commands Version Syntax Description
SADD 1.0.0 key member [member ...] 집합에 member를 추가
SREM 1.0.0 key member [member ...] 집합에서 member를 삭제
SMEMBERS 1.0.0 key 집합의 모든 member를 조회
SCARD 1.0.0 key 집합에 속한 member의 갯수를 조회
SUNION 1.0.0 key [key ...] 합집합을 구함
SINTER 1.0.0 key [key ...] 교집합을 구함
SDIFF 1.0.0 key [key ...] 차집합을 구함
SUNIONSTORE 1.0.0 dest_key src_key [src_key ...] 합집합을 구해서 새로운 집합에 저장
SINTERSTORE 1.0.0 dest_key src_key [src_key ...] 교집합을 구해서 새로운 집합에 저장
SDIFFSTORE 1.0.0 dest_key src_key [src_key ...] 차집합을 구해서 새로운 집합에 저장
SISMEMBER 1.0.0 key member 집합에 member가 존재하는지 확인
SMOVE 1.0.0 src_key dest_key member 소스 집합의 member를 목적 집합으로 이동
SPOP 1.0.0 key [count] 집합에서 무작위로 member를 가져옴
SRANDMEMBER 1.0.0 key [count] 집합에서 무작위로 member를 조회
SSCAN 2.8.0
key cursor [MATCH pattern]
[COUNT count]
member를 일정 단위 갯수 만큼씩 조회
6. Data Types
© 2021 NeoClova Co.,LTD
12
Stored Sets(Zsets)
Commands Version Syntax Description
ZADD 1.2.0 key score member [score member ...] 집합에 score와 member를 추가
ZCARD 1.2.0 key 집합에 속한 member의 갯수를 조회
ZINCRBY 1.2.0 key increment member 지정한 만큼 score 증가, 감소
ZRANGE 1.2.0 key start stop [withscores] index로 범위를 지정해서 조회
ZRANGEBYSCORE 1.2.0
key min max [withscores]
[limit offset count]
score로 범위를 지정해서 조회
ZREM 1.2.0 key member [member ...] 집합에서 member를 삭제
ZREMRANGEBYSCORE 1.2.0 key min max score로 범위를 지정해서 member를 삭제
ZREVRANGE 1.2.0 key start stop [withscores] index로 범위를 지정해서 큰 것부터 조회
ZSCORE 1.2.0 key member member를 지정해서 score를 조회
ZINCRBY 1.2.0 key increment member 지정한 만큼 score 증가, 감소
ZCOUNT 2.0.0 key min max score로 범위를 지정해서 갯수 조회
ZRANK 2.0.0 key member member를 지정해서 rank(index)를 조회
ZREVRANK 2.0.0 key member member를 지정해서 reverse rank(index)를 조회
ZREMRANGEBYRANK 2.0.0 key start stop index로 범위를 지정해서 member를 삭제
ZUNIONSTORE 2.0.0
dest_key numkeys src_key [src_key ...]
[WEIGHTS weight [weight ...]]
[AGGREGATE SUM|MIN|MAX]
합집합을 구해서 새로운 집합에 저장
ZINTERSTORE 2.0.0
dest_key numkeys src_key [src_key ...]
[WEIGHTS weight [weight ...]]
[AGGREGATE SUM|MIN|MAX]
교집합을 구해서 새로운 집합에 저장
ZREVRANGEBYSCORE 2.2.0
key max min [withscores]
[limit offset count] score로 범위를 지정해서 큰 것부터 조회
ZSCAN 2.8.0
key cursor [MATCH pattern]
[COUNT count] score, member를 일정 단위 갯수 만큼씩 조회
ZRANGEBYLEX 2.8.9 key min max [limit offset count] member로 범위를 지정해서 조회
ZLEXCOUNT 2.8.9 key min max member로 범위를 지정해서 갯수 조회
ZREMRANGEBYLEX 2.8.9 key min max member로 범위를 지정해서 member를 삭제
ZREVRANGEBYLEX 2.8.9 key max min [limit offset count] member로 범위를 지정해서 큰 것부터 조회
6. Data Types
© 2021 NeoClova Co.,LTD
13
Hashes
Commands Version Syntax Description
HSET 2.0.0 key field value Field와 value를 저장
HDEL 2.0.0 key field [field ...] Field로 value를 삭제
HGET 2.0.0 key field Field로 value를 조회
HLEN 2.0.0 key Field 갯수 조회
HMSET 2.0.0 key field value [field value ...] 여러개의 field와 value를 저장
HMGET 2.0.0 key field [field ...] 여러개의 value를 조회
HKEYS 2.0.0 key Key에 속한 모든 field name을 조회
HVALS 2.0.0 key Key에 속한 모든 value를 조회
HGETALL 2.0.0 key Key에 속한 모든 field와 value을 조회
HINCRBY 2.0.0 key field increment value를 increment 만큼 증가 또는 감소
HEXISTS 2.0.0 key field Field가 있는지 확인
HSETNX 2.0.0 key field value Field가 기존에 없으면 저장
HINCRBYFLOAT 2.6.0 key field increment_float value를 increment_float 만큼 증가 또는 감소
HSCAN 2.8.0
key cursor [MATCH pattern]
[COUNT count]
Field, member를 일정 단위 갯수 만큼씩 조회
HSTRLEN 3.2.0 key field value의 길이(byte)를 조회
6. Data Types
© 2021 NeoClova Co.,LTD
14
Streams
Commands Version Syntax Description
XADD 5.0.0 key ID field string [field string ...]
XLEN 5.0.0 key
XRANGE 5.0.0 key start end [COUNT count]
XREVRANGE 5.0.0 key end start [COUNT count]
XREAD 5.0.0 [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
XDEL 5.0.0 key ID [ID ...]
XTRIM 5.0.0 key MAXLEN [~] count
XGROUP 5.0.0
[CREATE key group id-or-$] [DESTROY key group] [DELCONSUMER key group consumer]
[SETID key group id-or-$]
XREADGROUP 5.0.0
GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...
]
XPENDING 5.0.0 key group [start end count] [consumer]
XACK 5.0.0 key group ID [ID ...]
XINFO 5.0.0 [CONSUMERS key group] [GROUPS key] [STREAM key] [HELP]
XCLAIM 5.0.0
key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time]
[RETRYCOUNT count] [FORCE] [JUSTID]
6. Data Types
© 2021 NeoClova Co.,LTD
15
• 데이터의 안전한 보관과 백업을 위해 디스크 쓰기 방식을 제공
• AOF(Append Only File): 명령이 실행될 때마다 기록되는 파일, 데이터 손실은 없으나 성능에 영향을 미침
• RDB(snapshot): 특정 시점 또는 간격마다 레디스의 데이터 전체를 디스크에 씀
Persistence 디스크 쓰기
• 비동기(asynchronous) Replication
• Master는 Slave 서버를 여러 개 둘 수 있으며, Slave는 또 여러 개의 Slave 서버를 둘 수 있음
Master –> Slave1(Master) -> Slave (Slave는 default로 Read-only 전용 : 2.6 Version부터)
• Partial Resynchronization(2.8) 및 Diskless Replication(2.8.18) 지원
• 자동 Failover 지원 안함 – 수동 절차로 Slave를 Master로 변경 및 Master 복구 후 수동 전환
Redis Replication
Master
Slave 1
Slave N
Master Slave 1(Master) Slave N
…
7. Redis 구성안
© 2021 NeoClova Co.,LTD
16
• Master와 Slave를 감시하다가 Master가 다운되면 이를 감지하여 자동으로 slave를 Master로 전환
• Sentinel의 기능
1. Monitoring : Redis Master, Slave들을 지속적으로 감시
2. Auto Failover : Redis Master가 다운되었을 때 Slave를 새로운 Master로 승격하고 여러 Slave가 있을
경우 새로운 Master로 부터 데이터를 받을 수 있게 재 구성
또한 다운된 Master가 재 시작시 자동으로 Slave로 전환되어 새로운 Master로 부터 데이터를 받을 수 있게
처리
Notification : Redis Master 및 Slave가 Failover 되었을 경우 Pub/Sub으로 Application(Client)에게 알림 기
능
Sentinel(센티널)
Master
Slave 1
Slave N
…
Sentinel
감시
감시
감시 Master Slave 1(Master) Slave N
감시 감시
Sentinel
7. Redis 구성안
© 2021 NeoClova Co.,LTD
17
• 1000대의 노드까지 확장 가능하게 설계
• 노드 추가, 삭제 시 레디스 클러스터 전체를 중지할 필요 없고, 키 이동 시에만 해당 키에 대해서만 잠시 멈
출 수 있음
• 레디스 서버는 마스터 또는 복제(슬레이브)
한 마스터 다운 시 다른 마스터들이 장애조치(failover)를 진행
레디스 클러스터에서는 별도의 센티널이 필요하지 않음
Cluster
• 머신(Box) 3대, 마스터 3대, 슬레이브 3대 구성 • 머신(Box) 3대, 마스터 3대, 슬레이브 3대 구성
장애시
7. Redis 구성안
© 2021 NeoClova Co.,LTD
18
• 기본적으로 멀티 키 명령(operation)을 수행할 수 없음
• Data Merge(멀티 키 명령)를 허용하지 않는 이유: 노드간 데이터(key, value)를 전송하는 것은 병목 현상이
발생할 수 있음
• Version 3.0이상에서 사용 가능
Cluster
• 머신(Box) 3대 • 머신(Box)3 다운 시: 서비스可
장애시 장애시
• 추가로 머신(Box)2 다운 시: 서비스可
* Cluster 제약 사항
7. Redis 구성안
© 2021 NeoClova Co.,LTD
19
구 분
Standalone: No HA
마스터
이중화: Half HA
마스터-슬레이브
센티널 Sentinel: HA
레디스 클러스터 Redis
Cluster: HA
특 징
 레디스 서버 1대로 구
성(Master노드)
 서버 다운시 AOF 또는
RDB 파일을 이용해 재
시작
- 커뮤니티 오픈소스로 무
상으로 사용 可
 레디스 서버 2대(Master-
Slave)로 구성
 Slave는 Master의 데이터를
실시간으로 전달 받아 보관
 Master 다운시 slave 서버
를 이용해서 서비스를 지속,
수동으로 Slave 서버를
Master로 변경시켜야 하고
애플리케이션이 새로운 마
스터에 접속해서 서비스를
계속 할 수 있도록 구현
- 커뮤니티 오픈소스로 무상으
로 사용 可
 마스터-슬레이브 구성에 센티
널을 추가해서 각 서버를 감시
 센티널은 마스터 서버를 감시
하고 있다가 다운되면 슬레이
브를 마스터로 승격
 레디스 클라이언트(애플레케
이션)은 새로운 마스터로 접속
해서 서비스를 계속
 일반적으로 센티널을 3대로
구성
 Scale out 에 대한 Application
의 수정 불필요
- 커뮤니티 오픈소스로 무상으로
사용 可
 클러스터는 샤딩
(sharding) 방법을 제공
 클러스터 마스터가 3대
이면 데이터가 3대에 나
누어 저장
 마스터 서버는 최소 3대
로 구성하고 각각은 슬
레이브를 가질 수 있음
- 커뮤니티 오픈소스로 무
상으로 사용 可
Redis 구성 정리
8. Redis 구성 정리
© 2021 NeoClova Co.,LTD
20

More Related Content

What's hot

What's hot (20)

Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performanceOptimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performance
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write Paths
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
MariaDB MaxScale
MariaDB MaxScaleMariaDB MaxScale
MariaDB MaxScale
 
PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
PostgreSQL Replication Tutorial
PostgreSQL Replication TutorialPostgreSQL Replication Tutorial
PostgreSQL Replication Tutorial
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
Deploying MariaDB databases with containers at Nokia Networks
Deploying MariaDB databases with containers at Nokia NetworksDeploying MariaDB databases with containers at Nokia Networks
Deploying MariaDB databases with containers at Nokia Networks
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slides
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
Solving PostgreSQL wicked problems
Solving PostgreSQL wicked problemsSolving PostgreSQL wicked problems
Solving PostgreSQL wicked problems
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 

Similar to redis 소개자료 - 네오클로바

sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스
영빈 송
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
OnGameServer
 
Msrds game server
Msrds game serverMsrds game server
Msrds game server
perpet
 

Similar to redis 소개자료 - 네오클로바 (20)

Redis
RedisRedis
Redis
 
MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기
 
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
MySQL 인덱스의 기초
MySQL 인덱스의 기초MySQL 인덱스의 기초
MySQL 인덱스의 기초
 
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
 
세션1. block chain as a platform
세션1. block chain as a platform세션1. block chain as a platform
세션1. block chain as a platform
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)
 
181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스
 
sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
Msrds game server
Msrds game serverMsrds game server
Msrds game server
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptx
 

More from NeoClova

More from NeoClova (11)

MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11
 
MariaDB10.7_install_Ubuntu.docx
MariaDB10.7_install_Ubuntu.docxMariaDB10.7_install_Ubuntu.docx
MariaDB10.7_install_Ubuntu.docx
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptx
 
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
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼
 
MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
 

redis 소개자료 - 네오클로바

  • 1. 표지, 목차, 간지 템플릿 © 2021 NeoClova Co.,LTD Next Opensource Cloud Value Redis ㈜네오클로바 Update : 2021. 2. 8 소개자료
  • 2. 표지, 목차, 간지 템플릿 © 2021 NeoClova Co.,LTD 목차 Ⅰ. Redis 1. Redis 2. Redis Engines Ranking 3. Redis 사용 사례 4. Redis Release Note 5. Redis Client 6. Data Types 7. Redis 구성안 8. Redis 구성 정리
  • 3. © 2021 NeoClova Co.,LTD 3 데이터 저장소로 디스크가 아닌 메모리를 사용하는 인 메모리 키 값 데이터 구조 스토어 (REmote DIctionary Server) Salvatore sanfilippo에 의해 개발되었으며 실시간 웹로그 애플리케이션을 MySQL로 개발하던 중 성능에 한계를 느껴 직접 Redis 개발 2009년 9월 버전 1.0(Master-Slave 구조 및 디스크 저장 기능 포함)을 시작으로 2018년 10월 버전 5.0(stream)까지 제공 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크 에 저장하는 방법 제공 기본적으로 Key-value 저장 방식이지만, Lists, Sets, Sorted sets, Hashes, Streams 같은 다양한 저장 방식 제공  Redis는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 애플 리케이션에서 널리 사용 1. Redis
  • 4. © 2021 NeoClova Co.,LTD 4 전 세계 데이터 베이스 순위 7위의 Redis DB-Engines Ranking 2. Redis Engines Ranking
  • 5. © 2021 NeoClova Co.,LTD 5 전 세계 Key-Value Store 부분 1위의 Redis DB-Engines Ranking of Key-value Stores 2. Redis Engines Ranking
  • 6. © 2021 NeoClova Co.,LTD 6 이 외에도 Yahoo!, tumblr, Twitter, stackoverflow, Github, instagram. 등 수많은 사이트에서 사용 출처 : OSS 포털 - 공개SW 활용 성공사례 공개SW 활용 성공사례 123 3. Redis 사용 사례
  • 7. © 2021 NeoClova Co.,LTD 7 • 2009년 9월 3일 Version 1.0: Master-slave 기능, 디스크 저장 기능(save) 등. • 2010년 1월 15일 Version 1.2: AOF 기능 추가 등. • 2010년 9월 3일 Version 2.0.0: DISCARD, APPEND, SETEX, SUBSTR, BLPOP, BRPOP 등 19개의 새 명령을 추가 하고 성능개선과 버그 수정 등. • 2011년 2월 23일 Version 2.2.0: 데이터 타입이 List와 set에서 값의 수가 적을 경우 그에 맞는 별도의 데이터 구조를 제공해서 메모리 절약 ZipList(Zip List of Lists, Zip List of ZSETS), IntSet(INTSET of SETS) • 2011년 10월 15일 Version 2.4.0: Ziplists, Zipmaps, Intsets Data Structure 도입으로 메모리 절약과 RDB 저장/로드 속도 개선 등. • 2012년 10월 23일 Version 2.6.0: 2.4에서 만들어진 RDB, AOF 파일 2.6에서 읽을 수 없으며, 2.6 노드를 2.4의 slave로 연결할 수 있으나 2.4의 노드를 2.6에서 연결할 수 없음 등. • 2013년 11월 22일 버전 2.8.0: 안정적인 알고리즘으로 재 구현한 Sentinel을 사용 가능 등 • 2015년 5월 1일 Verson 3.0.0: Redis 클러스터 기능 제공 등 • 2017년 7월 Version 4.0.0GA: Redis 기능을 확장하고 새로운 데이터 유형을 구현할 수 있는 모듈을 작성할 수 있음 • 2018년 10월 17일 Version 5.0: 스트림(로그 데이터를 처리하기 위해서 5.0에서 새로 도입된 데이터 타입): 데이터가 연속적으로 발생하고 기존에 데이터를 수정하지 않고 추가로 밸생시키는 데이터를 보관하고 처리하는데 적합한 데이터 구조 • 2019년 4월 30일 Version 6.0 GA: SSL,ACL,RESP3, 클라이언트측 캐싱, Thread I/O, 복제본에 대한 디스크 없는 복제, 클러스터 지원(benchmark, cli, Disque, Proxy ) Release Note 4. Redis Release Note
  • 8. © 2021 NeoClova Co.,LTD 8 • HiRedis는 Salvatore가 만든 공식적 C Redis Client • 레디스의 모든 명령과 Async mode, Pipelining, Event Driven Programming 지원 • 클러스터를 관리하기 위한 명령은 실행할 수 있으나 클러스터를 지원하지 않음 HiRedis Client for C • Java용 Redis Client • 사용하기 쉬우며 Redis 명령어를 그대로 사용 가능 • Redis 4.0을 공식 지원하지 않음 (사용하는데는 문제 없음) • Async 메소드를 제공하지 않아 Async mode를 사용할 수 없음 Jedis for Java • Java용 Redis Client • 레디스의 모든 명령과 Async mode, Pipelining, Connection Pooling 지원 • Async mode 및 클러스터 지원 Lettuce for Java • Java용 Redis Client • Jedis나 Lettuce에 비교해서 사용하기 쉽지 않음 Jedis나 Lettuce는 Redis Server에 Connection하면 바로 명령(메소드)를 사용할 수 있으나 Redisson은 먼저 DataType에 맞는 메소드를 선택 해야 함 • Redis 명령과 Redisson 메소드 명이 대부분 다름 INCR -> getAtomicLong(), LPUSH -> addFirst(), LRANGE -> readAll() Redisson for Java • C# 용 Redis Client • Sync, Async 명령을 실행 할 수 있음 • Cluster 지원 StackExchange.Redis • PHP 레디스 클라이언트 • Cluster 지원 Phpredis 5. Redis Client
  • 9. © 2021 NeoClova Co.,LTD 9 Commands Version Syntax Description DECR 1.0.0 key 1씩 감가, 신규이면 -1로 setting. DECRBY 1.0.0 key decrement decrement만큼 감소. 신규이면 -decrement로 setting. DEL 1.0.0 key [key ...] 데이터를 삭제 GET 1.0.0 key 데이터를 조회 GETSET 1.0.0 key value 기존 데이터를 조회하고 새 데이터를 저장 INCR 1.0.0 key 1씩 증가, 신규이면 1로 setting. INCRBY 1.0.0 key increment increment만큼 증가. 신규이면 increment로 setting. MGET 1.0.0 key [key ...] 여러개의 데이터를 한번에 조회 SET 1.0.0 key value [EX seconds] 데이터를 저장, key가 이미 있으면 덮어쓴다. [PX milliseconds] [NX|XX] SETNX 1.0.0 key value 지정한 key가 없을 경우에만 데이터를 저장 MSET 1.0.1 key value [key value ...] 여러개의 데이터를 한번에 저장 MSETNX 1.0.1 key value [key value ...] 지정한 key가 없을 경우에만, 여러개의 데이터를 한번에 저장 APPEND 2.0.0 key value 데이터를 추가, 지정한 key가 없으면 저장 SETEX 2.0.0 key seconds value 지정한 시간(초) 이후에 데이터 자동 삭제 GETBIT 2.2.0 key offset bit 값 조회 SETBIT 2.2.0 key offset value bit 값 조정 SETRANGE 2.2.0 key offset value 지정한 위치(offset)부터 데이터를 겹쳐쓴다 STRLEN 2.2.0 key 데이터의 바이트수를 리턴 GETRANGE 2.4.0 key start end 데이터의 일부 문자열을 조회 BITCOUNT 2.6.0 key [start end] 1인 bit 수를 센다 BITOP 2.6.0 key operation destkey key [key ...] bit 연산( AND, OR, XOR, NOT) 실행 INCRBYFLOAT 2.6.0 key increment 실수연산, increment만큼 증가. 신규이면 increment로 setting. PSETEX 2.6.0 key milliseconds value 지정한 시간(밀리초) 이후에 데이터 자동 삭제 BITPOS 2.8.7 key bit [start [end]] 지정한 bit의 위치를 구한다 BITFIELD 3.2.0 key [GET type offset] [SET type offset value] [INCRBY Perform arbitrary bitfield integer operations on strings Strings 6. Data Types
  • 10. © 2021 NeoClova Co.,LTD 10 List Commands Version Syntax Description LPUSH 1.0.0 key value [value ...] 왼쪽에서 리스트의 오른쪽에 데이터를 저장 RPOP 1.0.0 key 리스트 오른쪽에서 데이터를 꺼내오고, 리스트에서는 삭제 LPOP 1.0.0 key 리스트 왼쪽에서 데이터를 꺼내오고, 리스트에서는 삭제 RPUSH 1.0.0 key value [value ...] 오른쪽에서 리스트의 왼쪽에 데이터를 저장 LRANGE 1.0.0 key start stop 인덱스로 범위를 지정해서 리스트 조회 LLEN 1.0.0 key 리스트에서 데이터의 총 갯수를 조회 LINDEX 1.0.0 key index 인덱스로 특정 위치의 데이터를 조회 LSET 1.0.0 key index value 인덱스로 특정 위치의 값을 바꿈 LREM 1.0.0 key count value 값을 지정해서 삭제 LTRIM 1.0.0 key start stop 인덱스로 지정한 범위 밖의 값들을 삭제 RPOPLPUSH 1.2.0 key src_key dest_key RPOP + LPUSH BLPOP 2.0.0 key [key ...] timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 LPOP 실행 BRPOP 2.0.0 key [key ...] timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 RPOP 실행 BRPOPLPUSH 2.2.0 src_key dest_key timeout 리스트에 값이 없을 경우, 지정한 시간만큼 기다려서 값이 들어오면 RPOPLPUSH 실행 LINSERT 2.2.0 key BEFORE|AFTER pivot value 지정한 값 앞/뒤에 새 값 저장 LPUSHX 2.2.0 key value 기존에 리스트가 있을 경우에만 LPUSH 실행 RPUSHX 2.2.0 key value 기존에 리스트가 있을 경우에만 RPUSH 실행 6. Data Types
  • 11. © 2021 NeoClova Co.,LTD 11 Sets Commands Version Syntax Description SADD 1.0.0 key member [member ...] 집합에 member를 추가 SREM 1.0.0 key member [member ...] 집합에서 member를 삭제 SMEMBERS 1.0.0 key 집합의 모든 member를 조회 SCARD 1.0.0 key 집합에 속한 member의 갯수를 조회 SUNION 1.0.0 key [key ...] 합집합을 구함 SINTER 1.0.0 key [key ...] 교집합을 구함 SDIFF 1.0.0 key [key ...] 차집합을 구함 SUNIONSTORE 1.0.0 dest_key src_key [src_key ...] 합집합을 구해서 새로운 집합에 저장 SINTERSTORE 1.0.0 dest_key src_key [src_key ...] 교집합을 구해서 새로운 집합에 저장 SDIFFSTORE 1.0.0 dest_key src_key [src_key ...] 차집합을 구해서 새로운 집합에 저장 SISMEMBER 1.0.0 key member 집합에 member가 존재하는지 확인 SMOVE 1.0.0 src_key dest_key member 소스 집합의 member를 목적 집합으로 이동 SPOP 1.0.0 key [count] 집합에서 무작위로 member를 가져옴 SRANDMEMBER 1.0.0 key [count] 집합에서 무작위로 member를 조회 SSCAN 2.8.0 key cursor [MATCH pattern] [COUNT count] member를 일정 단위 갯수 만큼씩 조회 6. Data Types
  • 12. © 2021 NeoClova Co.,LTD 12 Stored Sets(Zsets) Commands Version Syntax Description ZADD 1.2.0 key score member [score member ...] 집합에 score와 member를 추가 ZCARD 1.2.0 key 집합에 속한 member의 갯수를 조회 ZINCRBY 1.2.0 key increment member 지정한 만큼 score 증가, 감소 ZRANGE 1.2.0 key start stop [withscores] index로 범위를 지정해서 조회 ZRANGEBYSCORE 1.2.0 key min max [withscores] [limit offset count] score로 범위를 지정해서 조회 ZREM 1.2.0 key member [member ...] 집합에서 member를 삭제 ZREMRANGEBYSCORE 1.2.0 key min max score로 범위를 지정해서 member를 삭제 ZREVRANGE 1.2.0 key start stop [withscores] index로 범위를 지정해서 큰 것부터 조회 ZSCORE 1.2.0 key member member를 지정해서 score를 조회 ZINCRBY 1.2.0 key increment member 지정한 만큼 score 증가, 감소 ZCOUNT 2.0.0 key min max score로 범위를 지정해서 갯수 조회 ZRANK 2.0.0 key member member를 지정해서 rank(index)를 조회 ZREVRANK 2.0.0 key member member를 지정해서 reverse rank(index)를 조회 ZREMRANGEBYRANK 2.0.0 key start stop index로 범위를 지정해서 member를 삭제 ZUNIONSTORE 2.0.0 dest_key numkeys src_key [src_key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 합집합을 구해서 새로운 집합에 저장 ZINTERSTORE 2.0.0 dest_key numkeys src_key [src_key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 교집합을 구해서 새로운 집합에 저장 ZREVRANGEBYSCORE 2.2.0 key max min [withscores] [limit offset count] score로 범위를 지정해서 큰 것부터 조회 ZSCAN 2.8.0 key cursor [MATCH pattern] [COUNT count] score, member를 일정 단위 갯수 만큼씩 조회 ZRANGEBYLEX 2.8.9 key min max [limit offset count] member로 범위를 지정해서 조회 ZLEXCOUNT 2.8.9 key min max member로 범위를 지정해서 갯수 조회 ZREMRANGEBYLEX 2.8.9 key min max member로 범위를 지정해서 member를 삭제 ZREVRANGEBYLEX 2.8.9 key max min [limit offset count] member로 범위를 지정해서 큰 것부터 조회 6. Data Types
  • 13. © 2021 NeoClova Co.,LTD 13 Hashes Commands Version Syntax Description HSET 2.0.0 key field value Field와 value를 저장 HDEL 2.0.0 key field [field ...] Field로 value를 삭제 HGET 2.0.0 key field Field로 value를 조회 HLEN 2.0.0 key Field 갯수 조회 HMSET 2.0.0 key field value [field value ...] 여러개의 field와 value를 저장 HMGET 2.0.0 key field [field ...] 여러개의 value를 조회 HKEYS 2.0.0 key Key에 속한 모든 field name을 조회 HVALS 2.0.0 key Key에 속한 모든 value를 조회 HGETALL 2.0.0 key Key에 속한 모든 field와 value을 조회 HINCRBY 2.0.0 key field increment value를 increment 만큼 증가 또는 감소 HEXISTS 2.0.0 key field Field가 있는지 확인 HSETNX 2.0.0 key field value Field가 기존에 없으면 저장 HINCRBYFLOAT 2.6.0 key field increment_float value를 increment_float 만큼 증가 또는 감소 HSCAN 2.8.0 key cursor [MATCH pattern] [COUNT count] Field, member를 일정 단위 갯수 만큼씩 조회 HSTRLEN 3.2.0 key field value의 길이(byte)를 조회 6. Data Types
  • 14. © 2021 NeoClova Co.,LTD 14 Streams Commands Version Syntax Description XADD 5.0.0 key ID field string [field string ...] XLEN 5.0.0 key XRANGE 5.0.0 key start end [COUNT count] XREVRANGE 5.0.0 key end start [COUNT count] XREAD 5.0.0 [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] XDEL 5.0.0 key ID [ID ...] XTRIM 5.0.0 key MAXLEN [~] count XGROUP 5.0.0 [CREATE key group id-or-$] [DESTROY key group] [DELCONSUMER key group consumer] [SETID key group id-or-$] XREADGROUP 5.0.0 GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ... ] XPENDING 5.0.0 key group [start end count] [consumer] XACK 5.0.0 key group ID [ID ...] XINFO 5.0.0 [CONSUMERS key group] [GROUPS key] [STREAM key] [HELP] XCLAIM 5.0.0 key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID] 6. Data Types
  • 15. © 2021 NeoClova Co.,LTD 15 • 데이터의 안전한 보관과 백업을 위해 디스크 쓰기 방식을 제공 • AOF(Append Only File): 명령이 실행될 때마다 기록되는 파일, 데이터 손실은 없으나 성능에 영향을 미침 • RDB(snapshot): 특정 시점 또는 간격마다 레디스의 데이터 전체를 디스크에 씀 Persistence 디스크 쓰기 • 비동기(asynchronous) Replication • Master는 Slave 서버를 여러 개 둘 수 있으며, Slave는 또 여러 개의 Slave 서버를 둘 수 있음 Master –> Slave1(Master) -> Slave (Slave는 default로 Read-only 전용 : 2.6 Version부터) • Partial Resynchronization(2.8) 및 Diskless Replication(2.8.18) 지원 • 자동 Failover 지원 안함 – 수동 절차로 Slave를 Master로 변경 및 Master 복구 후 수동 전환 Redis Replication Master Slave 1 Slave N Master Slave 1(Master) Slave N … 7. Redis 구성안
  • 16. © 2021 NeoClova Co.,LTD 16 • Master와 Slave를 감시하다가 Master가 다운되면 이를 감지하여 자동으로 slave를 Master로 전환 • Sentinel의 기능 1. Monitoring : Redis Master, Slave들을 지속적으로 감시 2. Auto Failover : Redis Master가 다운되었을 때 Slave를 새로운 Master로 승격하고 여러 Slave가 있을 경우 새로운 Master로 부터 데이터를 받을 수 있게 재 구성 또한 다운된 Master가 재 시작시 자동으로 Slave로 전환되어 새로운 Master로 부터 데이터를 받을 수 있게 처리 Notification : Redis Master 및 Slave가 Failover 되었을 경우 Pub/Sub으로 Application(Client)에게 알림 기 능 Sentinel(센티널) Master Slave 1 Slave N … Sentinel 감시 감시 감시 Master Slave 1(Master) Slave N 감시 감시 Sentinel 7. Redis 구성안
  • 17. © 2021 NeoClova Co.,LTD 17 • 1000대의 노드까지 확장 가능하게 설계 • 노드 추가, 삭제 시 레디스 클러스터 전체를 중지할 필요 없고, 키 이동 시에만 해당 키에 대해서만 잠시 멈 출 수 있음 • 레디스 서버는 마스터 또는 복제(슬레이브) 한 마스터 다운 시 다른 마스터들이 장애조치(failover)를 진행 레디스 클러스터에서는 별도의 센티널이 필요하지 않음 Cluster • 머신(Box) 3대, 마스터 3대, 슬레이브 3대 구성 • 머신(Box) 3대, 마스터 3대, 슬레이브 3대 구성 장애시 7. Redis 구성안
  • 18. © 2021 NeoClova Co.,LTD 18 • 기본적으로 멀티 키 명령(operation)을 수행할 수 없음 • Data Merge(멀티 키 명령)를 허용하지 않는 이유: 노드간 데이터(key, value)를 전송하는 것은 병목 현상이 발생할 수 있음 • Version 3.0이상에서 사용 가능 Cluster • 머신(Box) 3대 • 머신(Box)3 다운 시: 서비스可 장애시 장애시 • 추가로 머신(Box)2 다운 시: 서비스可 * Cluster 제약 사항 7. Redis 구성안
  • 19. © 2021 NeoClova Co.,LTD 19 구 분 Standalone: No HA 마스터 이중화: Half HA 마스터-슬레이브 센티널 Sentinel: HA 레디스 클러스터 Redis Cluster: HA 특 징  레디스 서버 1대로 구 성(Master노드)  서버 다운시 AOF 또는 RDB 파일을 이용해 재 시작 - 커뮤니티 오픈소스로 무 상으로 사용 可  레디스 서버 2대(Master- Slave)로 구성  Slave는 Master의 데이터를 실시간으로 전달 받아 보관  Master 다운시 slave 서버 를 이용해서 서비스를 지속, 수동으로 Slave 서버를 Master로 변경시켜야 하고 애플리케이션이 새로운 마 스터에 접속해서 서비스를 계속 할 수 있도록 구현 - 커뮤니티 오픈소스로 무상으 로 사용 可  마스터-슬레이브 구성에 센티 널을 추가해서 각 서버를 감시  센티널은 마스터 서버를 감시 하고 있다가 다운되면 슬레이 브를 마스터로 승격  레디스 클라이언트(애플레케 이션)은 새로운 마스터로 접속 해서 서비스를 계속  일반적으로 센티널을 3대로 구성  Scale out 에 대한 Application 의 수정 불필요 - 커뮤니티 오픈소스로 무상으로 사용 可  클러스터는 샤딩 (sharding) 방법을 제공  클러스터 마스터가 3대 이면 데이터가 3대에 나 누어 저장  마스터 서버는 최소 3대 로 구성하고 각각은 슬 레이브를 가질 수 있음 - 커뮤니티 오픈소스로 무 상으로 사용 可 Redis 구성 정리 8. Redis 구성 정리
  • 20. © 2021 NeoClova Co.,LTD 20