redis/redis-rb · error · Redis::Distributed::CannotDistribute
MAPPED_MSET cannot be used in Redis::Distributed because the
Error message
MAPPED_MSET cannot be used in Redis::Distributed because the keys involved need to be on the same server or because we cannot guarantee that the operation will be atomic.
What it means
Error "MAPPED_MSET cannot be used in Redis::Distributed because the keys involved need to be on the same server or because we cannot guarantee that the operation will be atomic." thrown in redis/redis-rb.
Source
Thrown at lib/redis/distributed.rb:331
end
# Set the time to live in milliseconds of a key.
def psetex(key, ttl, value)
node_for(key).psetex(key, ttl, value)
end
# Set the value of a key, only if the key does not exist.
def setnx(key, value)
node_for(key).setnx(key, value)
end
# Set multiple keys to multiple values.
def mset(*)
raise CannotDistribute, :mset
end
def mapped_mset(_hash)
raise CannotDistribute, :mapped_mset
end
# Set multiple keys to multiple values, only if none of the keys exist.
def msetnx(*)
raise CannotDistribute, :msetnx
end
def mapped_msetnx(_hash)
raise CannotDistribute, :mapped_msetnx
end
# Get the value of a key.
def get(key)
node_for(key).get(key)
end
# Get the value of a key and delete it.
def getdel(key)View on GitHub (pinned to 2ba9010b91)
Solutions
- Do not use mapped_mset on Redis::Distributed; the keys may hash to different servers.
- Iterate the hash and call set for each key/value pair so routing stays per-key.
When it happens
Trigger: Thrown at lib/redis/distributed.rb:331 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of redis/redis-rb@2ba9010b91 (2026-08-23).
Data as JSON: /api/errors/d9f6a95367df80eb.
Report an issue: GitHub.