Redis는 빠르고 강력한 인메모리 캐시 시스템이지만,
단일 인스턴스로는 장애에 매우 취약합니다.
그래서 실무에서는 Replication, Sentinel, Cluster를 활용해
고가용성을 확보하는 것이 필수입니다.
기본 Redis는 단일 인스턴스로 구성되며 다음과 같은 한계가 있습니다:
➜ 그래서 실무에서는 이중화와 분산을 고려해야 합니다.
Redis는 기본적으로 비동기 복제를 지원합니다.
하나의 Master가 쓰기, 여러 개의 Slave가 복제를 통해 읽기 전용으로 구성됩니다.
[Client]
↓
┌──────────┐
│ Master │ ← 쓰기
└──────────┘
↓ ↓
[Slave1][Slave2] ← 읽기
Redis Sentinel은 Master의 상태를 감시하고, 장애 발생 시
자동으로 Slave를 승격하여 새로운 Master로 전환해주는 구성입니다.
[Sentinel1]
[Sentinel2]
[Sentinel3] ← quorum 구성
↓
┌──────────┐
│ Master │ ← 쓰기
└──────────┘
↓ ↓
[Slave1][Slave2] ← 읽기
| 기능 | 설명 |
|---|---|
| 모니터링 | Master에 하트비트 전송 |
| 자동 장애 감지 | Master 응답 없으면 Failover |
| Slave 승격 | 새 Master로 전환, 나머지 Slave는 새 Master 복제 |
| 클라이언트 알림 | 새 Master 정보 전파 |
Redis Cluster는 데이터를 샤딩(분산 저장) 하여
수평 확장성과 이중화를 모두 지원하는 고급 구성입니다.
┌─────────────┐
│ Master A │────┐
└─────────────┘ │
▼
┌─────────────┐ [Replica A]
│ Master B │────┘
└─────────────┘
:
(총 16384개의 해시 슬롯 분산 저장)
| 항목 | 설명 |
|---|---|
| 데이터 샤딩 | key hash를 기반으로 해시 슬롯 분산 |
| Master-Slave 이중화 | 각 Master마다 Replica 존재 |
| 자동 장애 전환 | 특정 Master가 죽으면 Replica가 승격 |
| 구성 | 설명 | 고가용성 | 확장성 |
|---|---|---|---|
| 단일 Redis | 기본 구성 | ❌ | ❌ |
| Replication | Master-Slave | ❌ (수동 전환) | ✅ (읽기 분산) |
| Sentinel | 자동 장애 감지 + 승격 | ✅ | ❌ |
| Cluster | 샤딩 + 자동 장애 전환 | ✅ | ✅ (수평 확장) |
Redis는 기본적으로 빠르지만 단일 장애점(SPOF)에 취약합니다.
실무에서는 Sentinel 또는 Cluster를 통해 고가용성 설계를 해야 합니다.