Nivel 3 · 30 min
Redis Clustering
Redis Cluster distribuye datos automáticamente entre múltiples nodos usando hash slots. Permite escalar horizontalmente y proporciona alta disponibilidad con failover automático. Es la solución para cargas que superan la capacidad de un solo nodo Redis.
Hash slots y distribución
Redis Cluster divide el espacio de claves en 16384 hash slots. Cada clave se asigna a un slot usando CRC16(key) % 16384. Los slots se distribuyen entre los nodos maestros. Un cluster con 3 maestros puede tener ~5461 slots por nodo. Las claves con el mismo hash slot están garantizadas de estar en el mismo nodo. Para garantizar que múltiples claves estén en el mismo nodo (necesario para Lua y operaciones multi-key), usá hash tags: user:{123}:profile y user:{123}:orders van al mismo slot porque {123} determina el hash.
Rebalanceo y failover
Al agregar o quitar nodos, los slots se redistribuyen (rebalanceo). Redis Cluster migra slots sin downtime usando CLUSTER SETSLOT y MIGRATE. El failover es automático: si un maestro falla, sus réplicas detectan la falla y una de ellas se promueve a maestro via votación. El tiempo de failover es configurable (cluster-node-timeout, default 15s). Durante el failover, las claves en ese shard no están disponibles.
Operaciones cross-slot y limitaciones
Redis Cluster no soporta operaciones que involucren claves en distintos slots en la misma llamada — MGET, SUNION, pipelines multi-key — a menos que todas las claves tengan el mismo hash tag. Lua scripts también requieren que todas las claves estén en el mismo slot. CLUSTER INFO y CLUSTER NODES dan el estado del cluster. Para debuggear: CLUSTER KEYSLOT key muestra en qué slot cae una clave.
Code example
-- Hash tags: garantizan mismo slot
SET user:{u123}:profile ...
SET user:{u123}:sessions ...
SET user:{u123}:preferences ...
-- Todas van al mismo slot (CRC16('u123') % 16384)
-- Verificar slot
CLUSTER KEYSLOT user:{u123}:profile
-- Informacion del cluster
CLUSTER INFO
CLUSTER NODES