redis自学(37)散列插槽
散列插槽
Redis会把每一个master节点映射到0~16383共16284个插槽(hash slot)上,查看集群信息时就能看到:
数据key不是与节点绑定,而是与插槽绑定。Reids会根据key的有效部分计算插槽值,分两种情况:
l Key中包含“{}”,且“{}”中至少包含1个字符,“{}”中的部分是有效部分
l Key中不包含“{}”,整个key都是有效部分
例如:key是num,那么就根据num计算,如果是{itcast}num,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是slot值。
为什么要跟插槽绑定而不是跟节点绑定?因为reids的主节点可能会出现宕机的情况,或者是集群扩容增加了节点,或者是集群伸缩删除了节点。节点删除或者宕机了,数据也就跟着丢了,而跟插槽绑定,节点宕机了,可以将插槽绑定到活着的节点上,集群扩容时,也可以将插槽进行转移。
验证:
Set a的时候,就重定向到了15495插槽所在的7003上了
Get num又重定向到了2765插槽所在的7001上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话