Zettelkasten

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로 슬롯을 보장해줄 필요가 있다

참고

이 문서를 참조하는 노트 (1)