Redis Cluster splits the key space into 16,384 hash slots spread across several primary nodes, each with one or more replicas. Clients hash each key to its slot and talk to the owning primary directly, following MOVED redirects when slots migrate. Primaries replicate asynchronously to their replicas, and the nodes themselves detect failures over the cluster bus and vote to promote a replica — no external coordinator needed.
Functional requirements
- Get, set and expire keys, plus data structures (hashes, sets, sorted sets, streams)
- Spread data and load across many nodes
- Optional reads from replicas
- Add or remove nodes and move data without downtime
- Survive the loss of a primary with automatic failover
Non-functional requirements
- Sub-millisecond latency for single-key operations
- Linear scaling of throughput as primaries are added
- Failover within seconds
- Accept a small window of lost writes on failover (replication is asynchronous)
Extensions
- Redis Streams as a lightweight event log.
- Client-side caching with server-assisted invalidation.
- Geo-replicated active-active setups (CRDT-based) for multi-region writes.