当前位置: 首页 > news >正文

海南 网站制作flash源文件网站

海南 网站制作,flash源文件网站,广告设计接单app,中国建设银行招聘网站报名系统Redis 集群报错 CROSSSLOT Keys in request dont hash to the same slot 的原因及解决方案 1. 错误原因 在 Redis 集群模式下,数据根据 哈希槽(Slot) 分散存储在不同的节点上(默认 16384 个槽)。当执行涉及多个 key …

Redis 集群报错 CROSSSLOT Keys in request don't hash to the same slot 的原因及解决方案

1. 错误原因

在 Redis 集群模式下,数据根据 哈希槽(Slot) 分散存储在不同的节点上(默认 16384 个槽)。当执行涉及多个 key 的命令(如 DEL key1 key2MGETMSET 等)时,这些 key 必须属于同一个哈希槽,否则会触发此错误。

示例场景

# 错误:key1 和 key2 属于不同槽
127.0.0.1:6379> DEL key1 key2
(error) CROSSSLOT Keys in request don't hash to the same slot

2. 根本原因
  • Redis 集群要求跨 key 操作的原子性,而不同槽的 key 可能位于不同节点,无法保证原子性。
  • 影响命令:DELMGETMSETSUNION 等多 key 操作。

3. 解决方案
方案 1:强制所有 key 使用相同哈希槽(推荐)

通过 哈希标签(Hash Tag) 强制让多个 key 分配到同一个槽。
方法:用 {} 包裹 key 的相同部分,Redis 仅根据 {} 内的内容计算槽。

示例

# 正确:key1 和 key2 使用相同的哈希标签
127.0.0.1:6379> DEL user:{100}:name user:{100}:age
(integer) 2  # 成功删除
方案 2:单 key 操作替代多 key 操作

将批量操作拆分为单个命令:

# 原始错误命令
DEL key1 key2# 改为单 key 操作
DEL key1
DEL key2
方案 3:使用 -c 参数让 redis-cli 自动重定向

redis-cli 中启用集群模式(-c),自动重定向到正确节点:

redis-cli -c -h <host> -p <port> DEL key1 key2

但此方法仍可能因跨槽失败,仅适用于 key 巧合在同一节点的情况。

方案 4:Lua 脚本保证原子性

Lua 脚本在集群中会被整体发送到同一个节点执行:

-- delete_keys.lua
redis.call('DEL', KEYS[1])
redis.call('DEL', KEYS[2])

执行:

redis-cli -h <host> -p <port> --eval delete_keys.lua key1 key2
方案 5:遍历所有节点删除(适用于模糊匹配)

若需删除通配符匹配的 key(如 index_kline*),需遍历所有节点:

# 获取集群所有主节点
NODES=$(redis-cli -h <host> -p <port> cluster nodes | grep master | awk '{print $2}' | cut -d '@' -f1)# 逐个节点执行 SCAN + DEL
for node in $NODES; doredis-cli -h ${node%:*} -p ${node#*:} --scan --pattern "index_kline*" | xargs -n 100 redis-cli -h ${node%:*} -p ${node#*:} DEL
done

4. 如何避免此问题?
  1. 设计 key 时使用哈希标签
    例如 order:{123}:itemsorder:{123}:status 保证相同订单的 key 在同一个槽。
  2. 避免跨槽的多 key 操作
    优先使用单 key 命令或事务(MULTI/EXEC)。
  3. 查询 key 的槽分布
    redis-cli -h <host> -p <port> CLUSTER KEYSLOT "your_key"
    

5. 总结
场景解决方案
批量删除固定 key使用哈希标签({}
模糊删除通配符 key遍历所有节点 + SCAN
需要原子性操作Lua 脚本
临时修复单 key 操作或 -c 模式

关键点:Redis 集群的多 key 操作必须满足 同槽规则,设计 key 时提前规划哈希标签可彻底避免此问题。

http://www.dtcms.com/a/476378.html

相关文章:

  • 网站到期后如何转域名银川哪里做网站
  • 在深圳做it的要做网站网站吗下载网页制作模板
  • 网站如何做才能被360收录做文交所的都有哪些网站
  • 做蛋糕视频的网站网站底部版权信息代码
  • 外贸购物网站模板甘肃兰州建筑网
  • 国外免费源码共享网站网站怎么做查询功能
  • wordpress 移动站做竞争小的网站
  • 湖南省建设工程信息网站搜狗站长
  • 珠海手机网站开发网络营销推广方法和工具
  • 网站开发生命周期模型有限公司破产债务怎么办
  • 关于学校网站建设做书的网站
  • 网站建设高级开发语言专业的企业小程序开发公司
  • 沈阳行业网站凌风wordpress百度云
  • 包头市建设局网站建设的比较好的档案馆网站
  • 杭州钱塘区网站建设合肥企业快速建站
  • 网站主页的布局方式wordpress用php版本号
  • 推荐好的网站或网页wordpress 二级域名设置
  • 4a级景区网站建设重庆建工建设工程信息网
  • 珠海一元夺宝网站建设做公司官网要服务器吗
  • 一个企业可以备案几个网站可以做视频推广的网站有哪些
  • 中国五码一级做爰网站t想学网站建设
  • dedecms网站首页如何下载和安装wordpress
  • 用psd做的买书网站长沙网站建设企业
  • 商城购物网站开发背景ps个人网站制作流程
  • 网站建设 苏州网站的关键词怎么设置
  • wordpress导出静态网站网商网
  • seo网站快速排名描述网站开发的流程
  • 别人不能注册我的wordpress站企业做网站哪家公司好
  • 网站都可以做哪些主题网站icp备案地
  • 最便宜的购物网站排名广告牌设计