Redis란?
- Redis(Remote Dictionary Server)는 key-value로 저장
- Redsi는 데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스
- 인메모리에 모든 데이터를 저장해서, 데이터 처리 성능이 빠름
Redis 아키텍처

1. Redis Replication
- Redis Replication은 마스터-슬레이브(master-slave) 아키텍처
- 마스터 노드는 쓰기(write) 작업을 담당하고, 슬레이브 노드는 읽기(read) 작업을 수행
- 슬레이브 노드는 마스터의 데이터를 실시간으로 복제하며, 마스터 노드의 데이터를 백업할 수 있음
2. Redis Sentinel
- Redis Sentinel은 고가용성을 제공하는 시스템으로, 마스터-슬레이브 구조와 함께 동작
- Sentinel은 Redis 클러스터를 모니터링하고, 마스터노드 장애 발생 시 슬레이브노드를 자동으로 마스터로 승격
3. Redis Cluster
- Redis Cluster는 수평적 확장성(horizontal scaling)을 제공하는 아키텍처
- 데이터를 여러 노드에 샤딩(sharding)하여 분산 저장
- 쓰기와 읽기가 여러 노드에 분산되어 병목이 줄어 듬
- 클러스터는 자체적으로 데이터 분할과 장애 복구를 관리

Redis 주요 사례
- 캐싱
- 세션 관리
- 실시간 분석 및 통계
- 메세지 큐
Redis 설치
# homebrew가 설치된 상태에서
brew install redis
# 설치 확인
brew services info redis
# 실행
brew services start redis
# 중지
brew services stop redis
Redis 접속
redis-cli
127.0.0.1:6379>
# 통신 확인
127.0.0.1:6379> ping
PONG
Redis 기본 명령어
set(get, del) <key> <value> / keys *
- 데이터 추가 / 삭제 / 조회
# 데이터 추가
127.0.0.1:6379> set kang:name "my name"
OK
127.0.0.1:6379> set kang:age 989
OK
127.0.0.1:6379> get kang:name
"my name"
# 모든 키 확인
127.0.0.1:6379> keys *
1) "kang:name"
2) "kang:age"
# 데이터 삭제
127.0.0.1:6379> del kang:age
(integer) 1
127.0.0.1:6379> get kang:age
(nil) # 없음을 의미
TTL설정 : set <key> <value> ex <만료시간 (초)>
- 레디스는 데이터 저장 시 만료시간을 설정할 수 있다.
- 레디스 특성상 메모리 공간이 한정되어 있기에 만료시간이 필요하다.
# TTL 설정
127.0.0.1:6379> set kang:pet cat ex 60
OK
# TTL 남은 시간 확인
127.0.0.1:6379> ttl kang:pet
(integer) 52
# TTL이 만료되었거나 없는 키값이면 return -2
127.0.0.1:6379> ttl kang:height
(integer) -2
# TTL이 설정되지 않았으면 return -1
127.0.0.1:6379> ttl kang:name
(integer) -1
DB 설정
Redis는 기본적으로 16개의 DB를 제공합니다.
각 DB는 0부터 15까지의 번호를 가지며, 기본 DB는 0번입니다.
# 각 DB별 정의된 키 정보 조회
INFO keyspace
# Keyspace
db0:keys=4,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
# 다른 DB로 변경 (기본 0)
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> INFO keyspace
# DB의 모든 데이터 삭제
127.0.0.1:6379[1]> FLUSHDB
OK
127.0.0.1:6379[1]> keys *
(empty array)
Redis 캐싱(caching) 전략
Cache Aside
- 캐시란 원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소
- 많이 사용하는 Cache Aside(= Look Aside) 전략
- Redis에 조회(Cache Hit)하고 없으면(Cache Miss) DB에서 읽는다.

데이터 일관성
최신 데이터는 DB만 데이터 업데이트를 하기 때문에,
redis에 있는 데이터와 DB에 있는 데이터가 일치하지 않을 수 있다.
DB만 업데이트하지 않고 Redis도 같이 업데이트하면 성능적 이점을 얻을 수 없으며,
캐시에 저장할 수 있는 공간은 한정적이다.
따라서 Redissms 데이터 조회 성능 개선 목적으로 데이터의 일관성을 포기하고
성능 향상을 위해 사용한다.
이를 조금이나마 극복하는 방법이 TTL을 같이 사용한다.
'Storage > Redis' 카테고리의 다른 글
| Redis - 동기 vs 비동기 명령어 (0) | 2025.02.22 |
|---|---|
| Redis - Queue (0) | 2025.02.04 |