How to fix CLUSTERDOWN Hash slot not served in Redis

RedisADVANCEDHIGHUpdated Dec 29, 2025· 217 views

Redis Cluster stops accepting queries when hash slots are not assigned to nodes. This error indicates the cluster is in a partially degraded state where one or more of the 16384 hash slots lack node coverage, preventing normal operations.

Quick fix

Fixes CLUSTERDOWN Hash slot not served

redis-cli -c cluster nodes
redis-cli -c cluster slots
redis-cli -c cluster info
  1. Check cluster status and identify unserved slots
  2. If using non-cluster mode, disable cluster-enabled
  3. Rejoin missing nodes to the cluster
  4. Fix slots stuck in importing/migrating state
redis — error
redis-cli -c cluster nodes
redis-cli -c cluster slots
redis-cli -c cluster info
CLUSTERDOWN Hash slot not served

What this error means

Redis Cluster divides the keyspace into 16384 hash slots and distributes them across nodes. By default, when a node detects that at least one hash slot is uncovered (no node is assigned to serve it), the entire cluster enters CLUSTERDOWN mode and rejects all client requests with this error. This is a safety mechanism: rather than allow writes to a degraded cluster that might cause data inconsistency, Redis stops all operations until the cluster state is resolved. A hash slot can become unserved when a master node fails and no replica takes over, when cluster resharding is interrupted, or when nodes fail to properly join the cluster during initialization.

Typical symptoms

  • Redis Cluster commands fail with 'CLUSTERDOWN Hash slot not served' error
  • All read/write operations are blocked, not just those on the unserved slot
  • CLUSTER SLOTS command returns incomplete or empty slot assignments
  • After a node restart or network partition, the cluster becomes unresponsive
  • CI/CD pipelines or applications timeout when connecting to Redis

Common causes

  1. Master node crashed or became unreachable, leaving no replica to serve its hash slots (most common cause)
  2. Cluster initialization incomplete: nodes started but slot assignment never finished
  3. Interrupted resharding operation left slots in importing/migrating state with no node able to serve them
  4. Network partition caused split-brain where slot ownership is inconsistent across nodes
  5. Using non-cluster-enabled Redis node in a cluster configuration
  6. Insufficient replicas: a master failed and no replica existed to promote

How to fix "CLUSTERDOWN Hash slot not served"

1Check cluster status and identify unserved slots

First, verify your cluster status and see which slots are missing:

bash
redis-cli -c cluster nodes
redis-cli -c cluster slots
redis-cli -c cluster info

Look for nodes marked as "fail" or "disconnected". The cluster slots output should show all 16384 slots assigned. If slots are missing or nodes report "unknown" slots, that's your problem.

2If using non-cluster mode, disable cluster-enabled

If you're not actually running Redis in cluster mode and this error appeared unexpectedly, disable clustering:

1. Edit your Redis config file (usually /etc/redis/redis.conf or /etc/redis/redis-cluster.conf):

bash
cluster-enabled no

2. Restart Redis:

bash
redis-cli shutdown
# then restart redis-server

This resolves the error if you're not intentionally using cluster mode.

3Rejoin missing nodes to the cluster

If a node is disconnected but still running, force it back into the cluster:

bash
# From the disconnected node, explicitly rejoin the cluster
redis-cli CLUSTER MEET {master-ip} {master-port}

Replace {master-ip} and {master-port} with a known working cluster node. The node should re-synchronize slot assignments.

Then verify slot coverage:

bash
redis-cli CLUSTER SLOTS | grep -c "^[0-9]"

All 16384 slots should eventually be assigned.

4Fix slots stuck in importing/migrating state

If a resharding operation was interrupted, slots might be stuck. Check:

bash
redis-cli CLUSTER NODES | grep -i "migrating|importing"

If slots are stuck, use redis-cli to stabilize them:

bash
# For each stuck slot number (e.g., 5000)
redis-cli CLUSTER SETSLOT 5000 STABLE

# Or on the target node during migration
redis-cli CLUSTER SETSLOT 5000 STABLE

After stabilizing, verify with CLUSTER SLOTS again.

5Use redis-cli --cluster fix to auto-repair the cluster

Redis provides an automated repair tool:

bash
redis-cli --cluster fix {any-node-ip}:{port}

This command connects to the cluster and attempts to:
- Detect nodes that are missing or in a bad state
- Reassign unserved slots to available nodes
- Correct inconsistent slot assignments

Example:

bash
redis-cli --cluster fix 192.168.1.10:6379

Review the output carefully before confirming any changes.

6If multiple masters are down, rebuild the cluster

If more than one master crashed and no replicas exist, you may need to rebuild:

1. Ensure all nodes are running and accessible
2. Flush data if acceptable:

bash
redis-cli FLUSHALL

3. Recreate the cluster with proper slot distribution:

bash
redis-cli --cluster create \
  192.168.1.10:6379 \
  192.168.1.11:6379 \
  192.168.1.12:6379 \
  --cluster-replicas 1

Use --cluster-replicas 1 to ensure each master has one replica for failover protection.

Advanced notes

Preventing Future Occurrences:
Always deploy Redis Cluster with adequate replication (at least 1 replica per master). Use your orchestration platform's health checks to automatically remove failed nodes and promote replicas. Monitor cluster state regularly with CLUSTER INFO and alert on slot coverage gaps.

Cluster-Require-Full-Coverage Setting:
You can set cluster-require-full-coverage no in redis.conf to allow the cluster to accept writes even with unserved slots. However, this masks the underlying problem and risks data inconsistency. Only use this as a temporary workaround while investigating the root cause—always fix slot coverage properly.

Application-Side Handling:
Use Redis client libraries that support automatic cluster slot redirection and connection pooling. Libraries like redis-py, node-redis, and go-redis automatically retry with the correct node when MOVED or ASK redirects are received, but they cannot retry CLUSTERDOWN errors. Your application should implement retry logic with exponential backoff when receiving CLUSTERDOWN.

Frequently asked questions

What does "CLUSTERDOWN Hash slot not served" mean?
Redis Cluster divides the keyspace into 16384 hash slots and distributes them across nodes. By default, when a node detects that at least one hash slot is uncovered (no node is assigned to serve it), the entire cluster enters CLUSTERDOWN mode and rejects all client requests with this error. This is a safety mechanism: rather than allow writes to a degraded cluster that might cause data inconsistency, Redis stops all operations until the cluster state is resolved.
How do I fix "CLUSTERDOWN Hash slot not served"?
Redis Cluster stops accepting queries when hash slots are not assigned to nodes. This error indicates the cluster is in a partially degraded state where one or more of the 16384 hash slots lack node coverage, preventing normal operations.
What causes "CLUSTERDOWN Hash slot not served"?
Master node crashed or became unreachable, leaving no replica to serve its hash slots (most common cause) Cluster initialization incomplete: nodes started but slot assignment never finished Interrupted resharding operation left slots in importing/migrating state with no node able to serve them
Is the "CLUSTERDOWN Hash slot not served" error serious?
Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.

Official resources & further reading