Lua脚本执行多个redis命令提示“CROSSSLOT Keys in request don‘t hash to the same slot“问题

这是由之前需求引发的问题,之前写了篇刀耕火种之手攒基于redis实现防短信轰炸方案-CSDN博客,需求一直没上线,最近压测时,为了让测试环境接近生产环境,将redis换成了集群,于是就有了这个报错,原因是在集群模式下,所有涉及到多个 key的Redis指令,都要求所有的 key处于同一个 slot,如果 slot不同,哪怕实际上这些 slot都在同一个结点上,也会报这个错(这段是我抄的(lll¬ω¬))。

如果不改变现有的用法,那目标就很明确,让所有key都落到同一个slot中,Redis提供了Hash Tag功能,在计算slot时,只计算Hash Tag内的内容,这样我们可以控制一些key强制落到同一slot,方法也很简单,通过在 key 中指定一个特殊的标记({}),让 Redis 只对标记内的内容计算 slot,而不是对整个 key 计算。调整后的key长这样:

更多内容可以参考这篇文章,我就不展开写了:一致性Hash算法延伸至Redis分片扩容使Lua脚本失效如何解决_16.lua脚本在使用中要操作key,但是在不同节点上,会不会有问题?主从,哨兵,切片?怎-CSDN博客

相关推荐
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.19 小时前
《redis-cluster 集群部署完全手册(含扩容+缩容)》
数据库·redis·缓存
0xDevNull19 小时前
Java项目中Redis热点Key自动检测方案详细教程
java·spring boot·redis
spencer_tseng21 小时前
redis.windows.conf 2026.04.27
windows·redis
八秒记忆的老男孩1 天前
Sentinel5P的L1B级数据预处理(BD7和BD8)【20260427】
数据库·redis·缓存
OYangxf1 天前
基于epoll的单线程Reactor:Tinyredis的网络层实现
c++·redis
睡觉就不困鸭1 天前
第十七天 翻转字符串里的单词
数据结构·算法·哈希算法·散列表
liulilittle1 天前
递归复制搜索所有的lua文件到指定目录
java·开发语言·lua·cmd
snow@li1 天前
数据库-Oracle:常用语法 / Oracle 核心知识技能梳理
数据库·redis·缓存
zhougl9961 天前
Redis 防止丢数据
java·redis·mybatis
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第17题:HashMap的加载因子为什么是0.75而不是1或0.5
java·开发语言·算法·哈希算法·散列表