Redis 아키텍처 설계 가이드 — Standalone부터 Cluster까지
Redis Standalone, Sentinel, Cluster 세 가지 아키텍처의 차이점과 서비스 규모별 선택 기준을 실무 관점에서 정리합니다.
TestForge Team ·
Redis 아키텍처 3종류
| 구분 | Standalone | Sentinel | Cluster |
|---|---|---|---|
| 노드 수 | 1 | 3+ | 6+ (최소) |
| HA | X | O (Failover) | O (Failover) |
| 수평 확장 | X | X | O (Sharding) |
| 복잡도 | 낮음 | 중간 | 높음 |
| 적합 규모 | 개발/소규모 | 중소규모 | 대규모 |
1. Standalone
단일 노드. 장애 시 서비스 중단.
# docker-compose.yml
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- redis-data:/data
적합한 경우: 개발 환경, 세션 캐시 정도의 소규모 서비스.
2. Sentinel (권장: 중소규모)
Master 1대 + Replica N대 + Sentinel 3대로 구성.
Master 장애 시 Sentinel이 자동으로 Replica를 Master로 승격합니다.
[Client] → [Sentinel 3대] → [Master]
↓ Replica
# sentinel.conf
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
Spring Boot 연결:
spring:
data:
redis:
sentinel:
master: mymaster
nodes:
- 192.168.1.1:26379
- 192.168.1.2:26379
- 192.168.1.3:26379
password: your-password
3. Cluster (대규모 / 수평 확장 필요 시)
데이터를 16384개 슬롯으로 분산. 최소 3 Master + 3 Replica = 6노드.
Slot 0~5460 → Master1 (+ Replica1)
Slot 5461~10922 → Master2 (+ Replica2)
Slot 10923~16383 → Master3 (+ Replica3)
# 클러스터 생성
redis-cli --cluster create \
192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 \
192.168.1.4:6379 192.168.1.5:6379 192.168.1.6:6379 \
--cluster-replicas 1
주의: Multi-key 명령어(MGET, MSET 등)는 같은 슬롯에 있는 키만 가능.
해결: Hash Tag 사용 → {user:1}:profile, {user:1}:session
메모리 정책 선택
# maxmemory-policy 옵션
allkeys-lru # 전체 키 중 LRU 제거 (캐시 용도에 적합)
volatile-lru # TTL 있는 키만 LRU 제거
allkeys-lfu # Redis 4.0+ LFU 알고리즘
noeviction # 제거 안 함, 쓰기 오류 반환 (세션 저장소)
데이터 영속성 설정
# RDB (스냅샷) - 성능 우선
save 900 1 # 900초 동안 1개 이상 변경 시 저장
save 300 10
save 60 10000
# AOF (Write-ahead log) - 내구성 우선
appendonly yes
appendfsync everysec # 1초마다 fsync (성능/내구성 균형)
운영 필수 모니터링 지표
# 실시간 통계
redis-cli info stats | grep -E "instantaneous|ops_per_sec|rejected"
# 메모리 사용량
redis-cli info memory | grep -E "used_memory_human|maxmemory_human"
# Slow log (10ms 이상 명령어)
redis-cli slowlog get 10
아키텍처 선택 가이드
- DAU 1만 이하: Standalone
- DAU 1만~100만: Sentinel (Master 1 + Replica 2)
- DAU 100만 이상 또는 데이터 100GB+: Cluster
- 세션 저장소: Sentinel +
noeviction - 캐시 레이어: Standalone 또는 Cluster +
allkeys-lru