Redis cluster는 단일 노드의 메모리 용량, 쓰기 처리량 한계를 수평 확장으로 해결한다.
·수정 2026.06.06·수정 3회
요약
- 단일 redis는 하나의 머신 메모리에 제한됨, 데이터가 100GB인데 머신 메모리가 64GB면 담을 수 없음
- Cluster는 데이터를 여러 노드에 분산 저장(샤딩)해서 이 한계를 넘음
- 다중 키 커맨드가 서로 다른 슬롯을 참조하면 CROSSLOT 에러가 나는데, Hash Tag로 동일 슬롯에 묶어 해결한다
본문
데이터 분배 방식
- redis cluster는 전체 키 공간을 16,384개의 해시 슬롯으로 나눈다.
- 키가 들어오면 CRC16(key) % 16384로 슬롯 번호를 계산하고, 그 슬롯을 담당하는 노드로 라우팅 됨
Cluster의 고가용성
- cluster도 각 마스터 노드에 레플리카를 붙여 고가용성을 제공 가능함
CROSSLOT 에러와 Hash Tag
- 다중 키 커맨드에서 참조하는 키들이 서로 다른 해시 슬롯에 매핑될 때 발생하는 에러가 CROSSLOT임
MGET,MSET,DEL key1 key2,SUNION등이나 Lua 스크립트, 트랜잭션(MULTI/EXEC)
- Hash Tag(중괄호
{})를 쓰면 중괄호 안 문자열만 기준으로 해시되어 동일 슬롯에 배치됨- 예:
{user1}:profile,{user1}:cart→ 같은 슬롯
- 예:
- 다중 키 커맨드가 사용되는 키는 hash tag로 슬롯을 보장해줄 필요가 있다