前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis - 集群Hash槽分配

Redis - 集群Hash槽分配

作者头像
夹胡碰
发布2021-04-13 16:20:00
3.1K0
发布2021-04-13 16:20:00
举报
文章被收录于专栏:程序猿~程序猿~

1. Redis的hash槽介绍

常见的Redis集群架构是三主三从的结构,为了保证数据分片,redis采用了Hash槽的概念,即:

将16383个solt映射到所有节点上

常见的三主三从结构,将solt平均分到三个节点上

节点A覆盖0-5460; 节点B覆盖5461-10922; 节点C覆盖10923-16383.

2. 获取数据

如果存入一个值,按照redis cluster哈希槽的算法: CRC16('key')384 = 6782。 那么就会把这个key 的存储分配到 B 上了。同样,当我连接(A,B,C)任何一个节点想获取'key'这个key时,也会这样的算法,然后内部跳转到B节点上获取数据

3. 新增一个主节点

新增一个节点D,redis cluster的这种做法是从各个节点的前面各拿取一部分slot到D上,会变成这样:

节点A覆盖1365-5460 节点B覆盖6827-10922 节点C覆盖12288-16383 节点D覆盖0-1364,5461-6826,10923-12287

同样删除一个节点也是类似,移动完成后就可以删除这个节点了。

4. 注意

Redis的Hash槽分配不是一致性Hash,一致性Hash是成一个hash环,当节点加入或者失效的时候,在环上顺时针找到对应节点。而Redis集群属于手动分配线性Hash槽,需要手动指定,并且尽量做到各个节点solt平均分配。 而至于为什么Redis没有采用一致性Hash,因为如果一个节点失效,把数据转移到下一个节点,容易造成缓存雪崩,而采用hash槽+副本节点失效的时候从节点自动接替,不易造成雪崩。

5. 参考

  1. Redis-Cluster集群
  2. redis集群扩容(添加新节点)
  3. Redis进阶实践之十二 Redis的Cluster集群动态扩容
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Redis的hash槽介绍
  • 2. 获取数据
  • 3. 新增一个主节点
  • 4. 注意
  • 5. 参考
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档