CROSSSLOT: CROSSSLOT Keys in request don't hash to the same slot(请求中的键未哈希到同一槽)
Redis含义
在 Redis Cluster 中使用了多键命令(如 MGET、MSET、SUNION),但这些键落在不同的哈希槽中。多键操作要求所有键位于同一槽中。
原因
在集群模式下,同时访问多个键的命令使用了分布在不同槽中的键。由于未使用 hash tag,键被分布到了不同节点上。
解决方法
使用 hash tag 将相关键放入同一槽:用花括号固定键名的一部分(如 {user1}:profile 和 {user1}:settings 会进入同一槽)。仅对共享同一 hash tag 的键使用多键命令。或者,将操作拆分为单键命令。
同一数据库的其他条目
- LOADINGLOADING Redis is loading the dataset in memory(Redis 正在将数据集加载到内存中)
- BUSYBUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE(Redis 正忙于运行脚本。只能调用 SCRIPT KILL 或 SHUTDOWN NOSAVE)
- MISCONFMISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk(Redis 已配置为保存 RDB 快照,但当前无法持久化到磁盘)
- MOVEDMOVED slot ip:port(集群重定向)
- ASKASK slot ip:port(集群重定向)
- NOSCRIPTNOSCRIPT No matching script. Please use EVAL(没有匹配的脚本。请使用 EVAL)
- EXECABORTEXECABORT Transaction discarded because of previous errors(由于之前的错误,事务已被丢弃)