redis/redis-rb · error · Redis::Distributed::CannotDistribute
MSET cannot be used in Redis::Distributed because the keys i
Error message
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 "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:327
# Set the time to live in seconds of a key.
def setex(key, ttl, value)
node_for(key).setex(key, ttl, value)
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)View on GitHub (pinned to 2ba9010b91)
Solutions
- Do not use mset on Redis::Distributed; the keys may hash to different servers.
- Set each key individually with set so each key is routed to its correct node.
When it happens
Trigger: Thrown at lib/redis/distributed.rb:327 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/e6951a21dbe26a7c.
Report an issue: GitHub.