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

相关推荐
難釋懷35 分钟前
Redis命令-Hash命令
数据库·redis·哈希算法
難釋懷38 分钟前
Redis命令-List命令
数据库·redis·list
hanqunfeng1 小时前
(七)Redis 命令及数据类型 -- Hash
数据库·redis·哈希算法
惊讶的猫1 小时前
redis总结
redis
少许极端2 小时前
Redis入门指南(六):从零到分布式缓存-数据持久化与事务
redis·分布式·缓存·事务·持久化
Charlie_lll2 小时前
RAG+ReAct 智能体深度重构|从「固定三步执行」到「动态思考-行动循环」
人工智能·spring boot·redis·后端·ai·重构
Leon-zy3 小时前
Redis7.4.5集群部署3主3从
redis·分布式·缓存·云原生
橘颂TA4 小时前
【剑斩OFFER】算法的暴力美学——力扣 692 题:前 K 个高频单词
网络·算法·leetcode·哈希算法·结构与算法
alonewolf_994 小时前
深入理解Redis线程模型:单线程神话与原子性实战
数据库·redis·缓存·分布式架构
小北方城市网4 小时前
SpringBoot 集成 Redis 实战(缓存优化与分布式锁):打造高可用缓存体系与并发控制
java·spring boot·redis·python·缓存·rabbitmq·java-rabbitmq