Redis is a powerful in-memory data structure store widely used as a database, cache, and message broker. One of its key features, particularly in a clustered environment, is the concept of "slots." These slots play a critical role in ensuring that data is evenly distributed across the cluster. In this blog, we'll explore Redis slots in detail, their relationship with the key-value store, and why they matter.
What Are Redis Slots?
Redis slots are a fundamental concept used in Redis Cluster, the distributed implementation of Redis. A Redis Cluster is made up of multiple nodes, and the data is distributed across these nodes. To achieve this distribution, Redis uses 16,384 hash slots, which act as logical partitions of the data.
Each key in Redis is mapped to one of these 16,384 slots using a hashing mechanism. The primary purpose of slots is to ensure even distribution of data and allow Redis to scale horizontally while maintaining high performance.
The Hashing Mechanism
Redis uses a simple yet effective hashing mechanism called CRC16 (Cyclic Redundancy Check) to determine the slot for a given key. The formula is as follows:
slot = CRC16(key) % 16384
This mechanism ensures that each key is assigned to a specific slot between 0 and 16,383. Once the slot is determined, the Redis Cluster knows which node is responsible for storing the key-value pair.
Here’s how it works:
- CRC16 Hashing: Redis computes a CRC16 checksum for the given key, which provides a unique hash value.
- Modulo Operation: The hash value is then divided by 16,384, and the remainder determines the slot number.
This approach ensures that each key is mapped to one of the 16,384 slots in a predictable manner. Once the slot is identified, the Redis Cluster routes the key-value pair to the specific node responsible for that slot. This process is efficient, ensures consistent data placement, and minimizes lookup overhead.
Relationship Between Slots and Key-Value Store
Redis is fundamentally a key-value store. In such a store, data is stored as pairs of keys and their corresponding values. For example:
SET user:1001 "John Doe"
Here, user:1001
is the key, and John Doe
is the value.
Slot Assignment
When you insert a key-value pair into a Redis Cluster, the key is first hashed to determine its slot. The Redis Cluster then routes the data to the node responsible for that slot. This process is seamless and transparent to the user.
Example
Let’s take an example to understand this:
Imagine a Redis cluster with 6 master nodes and 6 replica nodes, where the masters and replicas are named as follows:
|
|

Now, let’s distribute some keys among these nodes.
- Key:
user:1001
- Hash:
CRC16(user:1001)
= 54678 - Slot:
54678 % 16384 = 1630
- Node: Assigned to Node M1 (responsible for slot range 1000–3000).
- Hash:
- Key:
order:2002
- Hash:
CRC16(order:2002)
= 34590 - Slot:
34590 % 16384 = 8318
- Node: Assigned to Node M3 (responsible for slot range 8000–9000).
- Hash:
- Key:
product:3003
- Hash:
CRC16(product:3003)
= 21234 - Slot:
21234 % 16384 = 4850
- Node: Assigned to Node M2 (responsible for slot range 4000–6000).
- Hash:
If a query is made for any of these keys, Redis routes the request to the appropriate node:
- Querying
user:1001
routes the request to Node M1. - Querying
order:2002
routes the request to Node M3. - Querying
product:3003
routes the request to Node M2.

Replication Example
To ensure fault tolerance, each master node has its replica node. For example:
- Data on Node M1 is replicated to Node R1.
- Data on Node M2 is replicated to Node R2.
- Data on Node M3 is replicated to Node R3.
In case Node M1 fails, Node R1 will take over seamlessly, ensuring uninterrupted service. The same principle applies to other master-replica pairs.
This master-replica setup enhances both scalability and fault tolerance while maintaining an even distribution of keys and slots across the cluster.
Ensuring Data Consistency
By assigning keys to specific slots, Redis ensures that data is consistently distributed across the cluster. This approach also makes scaling and rebalancing straightforward, as slots can be moved between nodes without disrupting the overall cluster.
Why Slots Matter in Redis?
Slots are not just a theoretical concept; they play a practical role in Redis Cluster's operation. Here are some key reasons why slots matter:
Data Distribution
Slots ensure that data is evenly distributed across the cluster nodes. This even distribution helps in preventing any single node from becoming a bottleneck, improving the overall performance and scalability of the cluster.
Fault Tolerance
Redis Cluster uses slots to replicate data for fault tolerance. Each slot can have multiple replicas stored on different nodes. If one node fails, another node with the same slot replica can take over.
Scalability
As your data grows, you may need to add more nodes to the cluster. Redis slots make it easy to scale horizontally by redistributing slots across the new nodes.
Simplified Management
Using slots, Redis provides an efficient way to manage and locate data. This design minimizes the complexity of dealing with a distributed database and ensures that operations like lookups and writes are fast.

Slot-Related Operations in Redis
Redis provides several commands to manage slots in a cluster. Let’s look at some of the most common ones:
CLUSTER KEYSLOT
This command returns the slot to which a key is assigned.
Example:
> CLUSTER KEYSLOT user:1001 12345
Here,
12345
is the slot for the keyuser:1001
.CLUSTER ADDSLOTS
This command assigns slots to a specific node. For example, to assign slots 0 to 1000 to a node:
CLUSTER ADDSLOTS 0-1000
CLUSTER MOVESLOT
Redis Cluster allows you to move slots between nodes to rebalance the cluster.
CLUSTER NODES
This command lists all nodes in the cluster and their assigned slots.
Example:
> CLUSTER NODES
Key Hash Tags for Slot Optimization
Redis allows you to use key hash tags to optimize slot allocation. A hash tag is a substring enclosed in curly braces {}
within a key. Redis uses the hash tag to compute the slot instead of the entire key.
Example
Consider two keys:
order:{1001}:details
order:{1001}:summary
Both keys will be assigned to the same slot because the hash tag {1001}
is identical. This feature is useful for ensuring related keys are stored in the same slot and, therefore, on the same node, reducing cross-node communication.
Best Practices for Using Redis Slots
To make the most of Redis slots, consider these best practices:
- Design Keys Carefully Use meaningful keys and consider using hash tags to group related keys into the same slot.
- Monitor Slot Usage Use monitoring tools to check slot distribution and ensure even data distribution across the cluster.
- Plan for Scaling When adding nodes to the cluster, redistribute slots carefully to avoid uneven load.
- Leverage Replication Configure slot replication to improve fault tolerance and ensure high availability.
Conclusion
Redis slots are a crucial component of Redis Cluster’s architecture. They enable efficient data distribution, scalability, and fault tolerance while maintaining the simplicity of Redis as a key-value store. By understanding how slots work and following best practices, you can design robust and scalable Redis-based systems that meet your application’s needs.
Whether you're managing a small cluster or scaling up to handle massive amounts of data, slots provide the foundation for Redis Cluster's seamless operation. Take the time to plan your key design, monitor your cluster, and leverage the power of Redis slots to unlock the full potential of this incredible in-memory data store.