Categories About Us Contact Us Become a Member

How to fix Redis MOVED and ASK cluster redirects

These are cluster redirects telling your client that the key lives on a different node. A cluster-aware client follows them automatically; a plain client surfaces them as errors. Jump to your situation below or work through the methods in order.

By Neeraj Singh ~6 min Updated Jun 2026 87% found this helpful
Error message
MOVED 3999 127.0.0.1:6381 (or ASK 3999 127.0.0.1:6381).
Summary

In a Redis Cluster, MOVED and ASK are redirects, not failures. The keyspace is split into 16384 hash slots spread across nodes, and when you send a command to a node that does not own the key's slot, it replies with the address of the node that does. MOVED means the slot has permanently moved there; ASK means a temporary redirect during a slot migration. A cluster-aware client follows these redirects automatically and caches the slot map, so your application never sees them. They appear as errors only when you use a plain single-node client (or redis-cli without -c) against a cluster. The fix is to use a cluster client (or pass -c to redis-cli), which makes MOVED and ASK invisible. Keeping the client's slot map fresh handles ongoing resharding.

What this error means

A Redis Cluster shares 16384 hash slots across its nodes, and each key maps to one slot. If your command reaches a node that does not hold that slot, the node does not proxy it; instead it tells you where the slot lives with MOVED, or, mid-migration, with ASK.

These are normal cluster mechanics. A cluster-aware client expects them, follows the redirect, and remembers the slot map so the next request goes straight to the right node. You only see MOVED and ASK as errors when the client does not understand clustering and treats the redirect as a failure.

Common causes

A plain single-node client used against a cluster.
redis-cli run without the -c cluster flag.
The client's cached slot map is stale after resharding.
A key's slot is being migrated (ASK).
Commands sent to the wrong node directly.
Expert insight

“MOVED and ASK are not errors, they are the cluster giving you directions. The keyspace is split into slots across nodes, and if you knock on the wrong node it says the key you want is over there. A cluster-aware client just follows that pointer and remembers it, so your app never notices. You only see these as errors when you point a plain client, or redis-cli without -c, at a cluster. Switch to a cluster client and they vanish.”

How to fix it

Method 1

Use a cluster-aware client

1Configure your client library in cluster mode so it follows MOVED and ASK automatically.
2It will discover nodes and cache the slot map.
3Your application stops seeing the redirects.
Method 2

Use redis-cli in cluster mode

1When using the CLI against a cluster, pass the cluster flag:
redis-cli -c -h host -p 6379
2It then follows redirects for you.
3Without -c, MOVED and ASK appear as output.
Method 3

Refresh the slot map after resharding

1If redirects persist after resharding, refresh the client's slot map.
2Most cluster clients re-fetch it on MOVED automatically.
3Confirm the topology with CLUSTER SLOTS.
Method 4

Co-locate related keys with hash tags

1To keep keys you use together on one node, hash-tag them, for example {user100}:profile.
2This reduces cross-node hops.
3It also avoids CROSSSLOT on multi-key commands.

MOVED and ASK are cluster redirects, not failures: the key lives on another node. Use a cluster-aware client (or redis-cli with -c) so it follows them automatically and caches the slot map. Hash-tag related keys to co-locate them, and refresh the slot map after resharding.

Frequently asked questions

What do MOVED and ASK mean in Redis?
They are cluster redirects. MOVED means the key's hash slot has permanently moved to the named node, and ASK is a temporary redirect during a slot migration. Both tell the client where to send the command.
How do I fix them?
Use a cluster-aware client that follows the redirects automatically, or run redis-cli with the -c flag. Plain single-node clients surface MOVED and ASK as errors instead of following them.
Are MOVED and ASK actual errors?
No. They are normal cluster mechanics. A cluster client handles them transparently, so they only look like errors when a non-cluster client treats the redirect as a failure.
Why redis-cli without -c shows them
Without -c, redis-cli connects to a single node and does not follow cluster redirects, so it prints MOVED or ASK. Adding -c puts it in cluster mode and it follows them.
What is the difference between MOVED and ASK?
MOVED is a permanent slot relocation, so the client updates its slot map. ASK is a temporary redirect while a slot is migrating, handled per request without permanently changing the map.
How do I avoid cross-node hops?
Use hash tags like {user100}:profile so related keys land in the same slot and node. This reduces redirects and also prevents CROSSSLOT errors on multi-key commands.

Still not working?

If a cluster client still throws redirects, its node list may be incomplete or behind a NAT that rewrites the advertised addresses; checking CLUSTER NODES and the cluster-announce settings clarifies the topology the client sees. You can also submit your error to us for a tailored fix.

Was this fix helpful? Thanks for your feedback!