Bird
Raised Fist0
Redisquery~10 mins

Hash slots distribution in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Hash slots distribution
Start with 16384 hash slots
↓
Calculate key's hash value
↓
Modulo operation: hash_value % 16384
↓
Assign key to resulting hash slot
↓
Distribute slots evenly across cluster nodes
↓
Client queries node responsible for slot
↓
Node handles key operations
↓
END
Redis cluster divides all keys into 16384 slots by hashing keys and assigning each to a slot, which are then distributed across nodes.
Execution Sample
Redis
HASH_SLOT = CRC16(key) % 16384
Assign key to HASH_SLOT
Distribute slots to cluster nodes
Client queries node for HASH_SLOT
Node processes key commands
This process shows how Redis calculates a key's hash slot and routes commands to the correct node.
Execution Table
StepActionKeyCRC16 HashHash Slot (CRC16 % 16384)Node Assigned
1Calculate CRC16 hashuser:10001234512345 % 16384 = 12345Node A
2Calculate CRC16 hashorder:5002345623456 % 16384 = 7072Node B
3Calculate CRC16 hashsession:abc3456734567 % 16384 = 1799Node C
4Calculate CRC16 hashcart:7894567845678 % 16384 = 12910Node A
5Calculate CRC16 hashproduct:3215678956789 % 16384 = 10637Node B
6End----
💡 All keys assigned to slots between 0 and 16383, distributed to nodes accordingly.
Variable Tracker
VariableStartAfter user:1000After order:500After session:abcAfter cart:789After product:321Final
Key-user:1000order:500session:abccart:789product:321-
CRC16 Hash-1234523456345674567856789-
Hash Slot-12345707217991291010637-
Node Assigned-Node ANode BNode CNode ANode B-
Key Moments - 3 Insights
Why do we use modulo 16384 in the hash slot calculation?
Because Redis cluster has exactly 16384 hash slots numbered 0 to 16383, modulo ensures the hash value fits into this range (see execution_table rows 1-5).
How does Redis decide which node handles a key?
Each node is assigned a range of hash slots; the key's slot determines the node (see Node Assigned column in execution_table).
What happens if two keys have the same hash slot?
They are stored on the same node responsible for that slot, allowing efficient grouping (implied by slot assignment in execution_table).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the hash slot for the key 'order:500'?
A23456
B12345
C7072
D8415
💡 Hint
Check the 'Hash Slot' column for 'order:500' in execution_table row 2.
At which step does the key get assigned to Node C?
AStep 3
BStep 1
CStep 4
DStep 5
💡 Hint
Look at the 'Node Assigned' column in execution_table to find Node C.
If the modulo was changed from 16384 to 10000, what would happen to the hash slot for 'cart:789'?
AIt would remain 12910
BIt would be 45678 % 10000 = 5678
CIt would be 45678 % 16384 = 12910
DIt would be 45678
💡 Hint
Recall the hash slot is calculated as CRC16(key) % number_of_slots (see execution_sample).
Concept Snapshot
Redis Cluster uses 16384 hash slots.
Each key's CRC16 hash is computed.
Hash slot = CRC16(key) % 16384.
Slots are distributed evenly across nodes.
Clients query nodes by slot to access keys.
This enables scalable, distributed key storage.
Full Transcript
Redis Cluster divides all keys into 16384 hash slots. Each key is hashed using CRC16, then the hash value is taken modulo 16384 to find its slot number. This slot number determines which cluster node stores the key. The cluster distributes these slots evenly among nodes. When a client wants to access a key, it calculates the key's slot and sends the command to the node responsible for that slot. This process ensures keys are spread across nodes for load balancing and scalability.

Practice

(1/5)
1. What is the total number of hash slots used by Redis Cluster to distribute data?
easy
A. 16384
B. 1024
C. 65536
D. 2048

Solution

  1. Step 1: Recall Redis Cluster design

    Redis Cluster divides data into hash slots to distribute keys evenly.
  2. Step 2: Identify the number of hash slots

    The standard number of hash slots in Redis Cluster is 16384.
  3. Final Answer:

    16384 -> Option A
  4. Quick Check:

    Redis Cluster uses 16384 hash slots [OK]
Hint: Remember Redis Cluster always uses 16384 slots [OK]
Common Mistakes:
  • Confusing hash slots with number of keys
  • Thinking slots are 1024 or 2048
  • Assuming slots equal to max integer value
2. Which Redis command shows the current distribution of hash slots across cluster nodes?
easy
A. CLUSTER NODES
B. CLUSTER KEYS
C. CLUSTER SLOTS
D. CLUSTER INFO

Solution

  1. Step 1: Understand Redis cluster commands

    Redis provides commands to inspect cluster state and slot distribution.
  2. Step 2: Identify the command for slot distribution

    The CLUSTER SLOTS command returns how hash slots are assigned to nodes.
  3. Final Answer:

    CLUSTER SLOTS -> Option C
  4. Quick Check:

    CLUSTER SLOTS shows slot distribution [OK]
Hint: Use CLUSTER SLOTS to see slot assignments [OK]
Common Mistakes:
  • Using CLUSTER NODES which shows node info but not slots
  • Confusing CLUSTER INFO with slot details
  • Assuming CLUSTER KEYS exists
3. Given a Redis Cluster with 3 nodes and the following slot ranges: Node1: 0-5460, Node2: 5461-10922, Node3: 10923-16383. Which node holds the key with hash slot 7000?
medium
A. None of the above
B. Node1
C. Node3
D. Node2

Solution

  1. Step 1: Understand slot ranges per node

    Node1 covers slots 0 to 5460, Node2 covers 5461 to 10922, Node3 covers 10923 to 16383.
  2. Step 2: Locate slot 7000

    Slot 7000 falls between 5461 and 10922, so it belongs to Node2.
  3. Final Answer:

    Node2 -> Option D
  4. Quick Check:

    7000 is in Node2's slot range [OK]
Hint: Check which node's slot range includes the slot number [OK]
Common Mistakes:
  • Choosing Node1 because 7000 is less than 10922
  • Choosing Node3 by mistake
  • Not checking slot ranges carefully
4. You run CLUSTER SLOTS but get an error: "ERR This instance has cluster support disabled". What is the likely cause?
medium
A. The Redis instance is not running in cluster mode
B. The command syntax is incorrect
C. The cluster has no slots assigned yet
D. The Redis version is too new

Solution

  1. Step 1: Analyze the error message

    The error says cluster support is disabled, meaning the instance is not a cluster node.
  2. Step 2: Understand cluster mode requirement

    Only Redis instances running in cluster mode support CLUSTER SLOTS command.
  3. Final Answer:

    The Redis instance is not running in cluster mode -> Option A
  4. Quick Check:

    Cluster commands need cluster mode enabled [OK]
Hint: Check if Redis is started with cluster enabled [OK]
Common Mistakes:
  • Assuming syntax error causes this
  • Thinking slots are unassigned causes error
  • Blaming Redis version without checking mode
5. In a Redis Cluster, if you want to evenly distribute 16384 hash slots across 4 nodes, which slot range should Node3 handle?
hard
A. 12288 to 16383
B. 8192 to 12287
C. 4096 to 8191
D. 0 to 4095

Solution

  1. Step 1: Calculate slots per node

    16384 slots divided by 4 nodes = 4096 slots per node.
  2. Step 2: Determine Node3's slot range

    Node1: 0-4095, Node2: 4096-8191, Node3: 8192-12287, Node4: 12288-16383.
  3. Final Answer:

    8192 to 12287 -> Option B
  4. Quick Check:

    Each node gets 4096 slots; Node3 starts at 8192 [OK]
Hint: Divide 16384 by nodes, assign consecutive ranges [OK]
Common Mistakes:
  • Off-by-one errors in slot ranges
  • Assigning wrong ranges to nodes
  • Not dividing slots evenly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard