Redis 클러스터에서 다중 키 Lua 스크립트 실행하기
핵심: 클러스터 모드에서 Lua 스크립트가 접근하는 모든 키는 같은 hash slot에 있어야 한다. 슬롯이 갈리면 실행 자체가 거부된다(CROSSSLOT). 해결책은 하나다 — 같은 원자적 연산으로 묶을 키들에 hash tag({...})를 넣어 슬롯을 강제로 일치시킨다. 왜 이런 제약이 생기나 Redis 클러스터는 키를 16384개의 hash slot으로 샤딩한다. 슬롯은 CRC16(key) % 16384로 계산되고, 각 슬롯은 특정 마스터 노드가 소유한다. Lua 스크립트는 단일 노드에서 원자적으로 실행된다. 스크립트가 도중에 다른 노드의 키를 만지려면 노드 간 조율이 필요한데, 클러스터는 그런 분산 트랜잭션을 지원하지 않는다....