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博客

相关推荐
绝顶少年9 小时前
Redis 高可用架构三部曲:主从复制、哨兵模式与集群模式深度解析
数据库·redis·架构
你不是我我10 小时前
【Java 开发日记】我们来说一说 Redis IO 多路复用模型
java·开发语言·redis
二进制_博客11 小时前
redis8.0快速搭建主从复制
redis·redis8
haiyu柠檬11 小时前
迁移redis 集群从Ubuntu到Red Hat
数据库·redis·缓存
AI浩12 小时前
【Redis】Windows下Redis环境搭建与使用详细教程
数据库·windows·redis
卿雪13 小时前
认识Redis:Redis 是什么?好处?业务场景?和MySQL的区别?
服务器·开发语言·数据库·redis·mysql·缓存·golang
二进制_博客13 小时前
全新redis8.0在centos7.5的安装
redis·nosql·redis8
虹科网络安全14 小时前
艾体宝干货 | Redis Python 开发系列#6 缓存、分布式锁与队列架构
redis·python·缓存
卿雪14 小时前
缓存异常:缓存击穿、缓存穿透、缓存雪崩 及其解决方案
java·数据库·redis·python·mysql·缓存·golang