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

redis数据分片算法

1.hash取余算法

设有N个分⽚,使⽤[0,N-1]这样序号进⾏编号.

针对某个给定的key,先计算hash值,再把得到的结果%N,得到的结果即为分⽚编号.

举例:N为3.给定key为hello,对hello计算hash值(⽐如使⽤md5算法),得到的结果为bc4b2a76b9719d91 ,再把这个结果%3,结果为0,那么就把hello这个key放到0号分⽚上.

优点:简单高效,数据分配均匀

缺点:扩容后需要大量的数据迁移

2.一致性hash算法

一致性Hash算法也是使用取模的方法,只是1.hash取余算法是对服务器的数量进行取模,而一致性Hash算法是对2^ 32-1取模,简单来说,一致性Hash算法将整个Hash值控件组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1取模(即哈希值是一个32位无符号整型)

整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^ 32-1,也就是说0点左侧的第一个点代表2^ 32-1, 0和2^ 32-1在零点中方向重合,我们把这个由2^32个点组成的圆环称为Hash环。

下一步将各个服务器使用Hash进行一个哈希,具体可以选择服务器的主机名(考虑到ip变动,不要使用ip)作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置,这里假设将上文中三个master节点的IP地址哈希后在环空间的位置如下:

优点:⼤⼤降低了扩容时数据搬运的规模,提⾼了扩容操作的效率.

缺点:数据分配不均匀(有的多有的少,数据倾斜).

3.hash槽分区算法

1. 哈希槽的概念

Redis集群使用16384个哈希槽来分散键空间。这意味着集群中的每个键都通过计算其哈希值并被映射到这16384个槽中的一个。

2. 哈希槽的分配

在Redis集群中,每个节点负责一部分哈希槽。例如,一个有5个节点的集群可能会将哈希槽平均分配给这5个节点,每个节点负责3276个哈希槽(16384 / 5 = 3276)。

3. 哈希槽的计算

当Redis需要确定一个键应该被存储在哪个节点时,它会使用以下步骤:

  1. 计算键的哈希值‌:使用SHA1哈希函数计算键的哈希值。例如,如果键是"mykey",则其哈希值可以通过SHA1(mykey)计算得到。

  2. 取模运算‌:将得到的哈希值对16384取模(即哈希值 % 16384),以得到该键应该被映射到的哈希槽编号。

    pythonCopyCodehash_slot=hash_value%16384
  3. 查找节点‌:根据得到的哈希槽编号,查找该槽被分配到的节点。

http://www.cnnetsun.cn/news/112328.html

相关文章:

  • 超越异步:如何在Node.js中构建极速数据库应用?
  • Boltz生物分子交互建模:从新手到专家的5个关键步骤
  • HoYo.Gacha专业抽卡分析工具完全使用手册
  • FastMCP高级特性之Composition
  • 安卓手机投屏到电脑的开源软件(scrcpy)
  • 边缘计算开源项目终极指南:让物联网设备秒变智能终端
  • ForensicsTool取证工具完整安装配置指南:快速掌握电子数据取证技能
  • DeepSeek-V3 KV缓存技术:让AI对话像翻书一样流畅
  • SpringBoot进阶教程(八十八)获取图片的宽高
  • PeachPie 1.1.13 发布支持最新PHP 8.5.0
  • 电视也可以玩街机经典游戏,你的客厅,早就该变成这样了!
  • 掌握3个Mock工具,轻松玩转单元测试
  • AutoGen到Microsoft Agent Framework终极迁移指南:从零开始构建现代化AI代理系统
  • 2008-2024年地级市女性奥运冠军数据
  • 2003-2024年上市公司人工智能采纳程度数据+Stata代码
  • 问了 3 个博士,导师不说,但目前最新论文卡人的已经不是知网查重
  • CST设计:可重构超表面宽带窄带可切换吸收与多波束技术
  • ai智能搜索文献:高效精准的学术资源检索新工具与应用研究
  • 英文文献的高效检索与阅读策略研究
  • 万字长文!Agent及其主流框架终极指南(附对比图),好Agent的标准:自己想、自己干、自己复盘!
  • 打造专属问答社区,开源系统助力内容创业新风口
  • Apache Impala为啥TBDS、华为MRS弃用?为什么不能做到无缝切换平缓迁移
  • 从开发到上线:智能Agent的Docker部署全链路实践(含YAML模板)
  • 智能连接与自动化引擎的全能表单系统,重新定义数据收集与业务流程的协同
  • 如何彻底解决企业级数据流程编排难题:Apache DolphinScheduler完整指南
  • 深度学习框架生态竞争格局:从Stable Diffusion WebUI Forge看技术选型逻辑
  • better-sqlite3深度解析:Node.js数据库操作的性能革命
  • 终极AI平台wgai:零门槛构建国产化智能识别系统
  • 基于VUE的企业协同管理系统 [VUE]-计算机毕业设计源码+LW文档
  • 如何快速使用bandcamp-dl:命令行音乐下载工具的完整教程