Redis 哈希槽基本概念

哈希槽(hash slot)是来自Redis Cluster的概念, 但在各种集群方案都有使用。

哈希槽是一个key的集合,Redis集群共有16384个哈希槽,每个key通过CRC16散列然后对16384进行取模来决定该key应当被放到哪个槽中,集群中的每个节点负责一部分哈希槽。

以有三个节点的集群为例:

  • 节点A包含0到5500号哈希槽
  • 节点B包含5501到11000号哈希槽
  • 节点C包含11001到16384号哈希槽
    这样的设计有利于对集群进行横向伸缩,若要添加或移除节点只需要将该节点上的槽转移到其它节点即可。

在某些集群方案中,涉及多个key的操作会被限制在一个slot中,如Redis Cluster中的mget/mset操作。

HashTag

HashTag机制可以影响key被分配到的slot,从而可以使用那些被限制在slot中操作。

HashTag即是用{}包裹key的一个子串,如{user:}1, {user:}2。

在设置了HashTag的情况下,集群会根据HashTag决定key分配到的slot, 两个key拥有相同的HashTag:{user:}, 它们会被分配到同一个slot,允许我们使用MGET命令。

通常情况下,HashTag不支持嵌套,即将第一个{和第一个}中间的内容作为HashTag。若花括号中不包含任何内容则会对整个key进行散列,如{}user:。

HashTag可能会使过多的key分配到同一个slot中,造成数据倾斜影响系统的吞吐量,务必谨慎使用。

mset在集群模式设置值时错误 CROSSSLOT Keys in request don’t hash to the same slot

解决方案HashTag

HashTag即是用{}包裹key的一个子串,如{user:}1, {user:}2。

(error) CROSSSLOT Keys in request don‘t hash to the same slot 解决方法相关推荐

  1. 记录go-redis使用集群时,报错:CROSSSLOT Keys in request don‘t hash to the same slot

    问题描述 需求:从一个变化的列表list中取出第一条数据,list 10s更新一次,10s内不能一直取第一条,需要均衡: bug代码: // lua脚本 var copyIndexScript str ...

  2. MySQL显示ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)解决方法

    MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法 参考文章: (1)MySQL显示 ...

  3. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法

    MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法 参考文章: (1)MySQL5.7报错[ERROR ...

  4. Error, some other host already uses address 192.168.0.202错误解决方法

    Error, some other host already uses address 192.168.0.202错误解决方法 参考文章: (1)Error, some other host alre ...

  5. win7 、2008 提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法

    win7 .2008 提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法 参考文 ...

  6. 关于Error in render: TypeError: Cannot read property '0' of null问题的解决方法

    关于Error in render: "TypeError: Cannot read property '0' of null"问题的解决方法 //这里是原生代码块,也就是运行该块 ...

  7. youtube_dl urlopen error EOF occurred in violation of protocol (_ssl.c:nnn) 错误的解决方法

    youtube_dl urlopen error EOF occurred in violation of protocol (_ssl.c:nnn) 错误的解决方法 参考文章: (1)youtube ...

  8. Android出现Error: Invoke-customs are only supported starting with Android O (--min-api 26)的解决方法

    Android出现Error: Invoke-customs are only supported starting with Android O (–min-api 26)的解决方法 在app下的b ...

  9. 【转载】“error LNK1169: 找到一个或多个多重定义的符号”的解决方法

    c++的小细节的地方 原文地址:https://blog.csdn.net/xiaosu123/article/details/5665729 问题描述如下: 有 三个源文件,A.h.B.cpp.C. ...

最新文章

  1. c++多线程队列 类对象
  2. 【Python基础】盘点 Python 10 大常用数据结构(上篇)
  3. 手把手教你写DI_2_小白徒手撸构造函数注入
  4. OLE DB , ODBC , ADO 知识了解
  5. 数列求和 java_[代码展示]数列求和
  6. 嵌入式基础面八股文——并发,同步,异步,互斥,阻塞,非阻塞的理解(2)
  7. [Canvas]空战游戏进阶 增加己方子弹管理类
  8. win7计算机桌面位置,win7系统更改桌面位置的操作方法
  9. 论文笔记A Liver Segmentation Method Based on the Fusion of VNet and WGAN
  10. 获取鼠标图片和鼠标位置的方法
  11. activemq学习记录(二)(使用p2p模式和使用发布订阅模式去生产以及消费数据)
  12. 昆明理工大学计算机考研分数线,昆明理工大学2015考研分数线已公布
  13. c语言中Exec函数,子进程的执行 -- exec 函数
  14. Win10 安装 PySC2 环境 -- DeepMind联合战网开发的《星际争霸 II》强化学习环境
  15. 2017年国庆随笔----- 心理学随笔
  16. 口语语汇单词篇(7)
  17. 直播出新规 这些行为会被限制参加活动
  18. VC 多屏控制显示文章整理
  19. 时间序列的分析和预测
  20. IDEA:Lambda expression are not supported at language level ‘5‘

热门文章

  1. python最新功能_Python在2020的新增功能:第1部分
  2. 英语语法---动名词短语详解
  3. 【商业落地篇】Gartner第四范式全球首发AutoML系列白皮书(限时免费下载)
  4. 科技、体育、创业,三者碰撞是真的野!
  5. 【论文解读】比特币:一种点对点的点子支付系统
  6. 【机器学习基础】太棒了!这里有385篇自然语言处理和机器学习领域的综述总结...
  7. 【Python基础】高效的10个Pandas函数,你都用过吗?
  8. 我是如何提高工作和研究效率的?分享给大家几个神器
  9. 而立之年,不拼体力的我们应该关注什么?
  10. 隐私安全的必答题,网易云信如何解?