美文网首页
Redis - 集群Hash槽分配

Redis - 集群Hash槽分配

作者: 夹胡碰 | 来源:发表于2021-04-11 00:36 被阅读0次

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集群动态扩容

相关文章

  • Redis - 集群Hash槽分配

    1. Redis的hash槽介绍 常见的Redis集群架构是三主三从的结构,为了保证数据分片,redis采用了Ha...

  • redis5 集群水平扩容

    添加1主1从到集群 添加7007到集群 7007加入集群后,是没有分配hash槽手工给7007分配hash槽,连接...

  • Redis-集群

    哈希槽Redis集群没有采用一致性hash,而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个key...

  • Redis集群

    集群 节点 一致性hash 哈希槽 异步复制 网络分区 Redis的集群方案 redis cluster...

  • Redis之旅--Redis集群(九)

    一、Redis Cluster模式 redis集群并没有使用一致性hash算法而引入了哈希槽概念,Redis 集群...

  • 为什么redis集群的最大槽数是16384个?

    Redis 集群并没有使用一致性hash,而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,每个key...

  • Redis 集群规范

    redis手册Redis 集群规范Redis集群安装Redis集群安装 Redis分布式部署,一致性hash;分布...

  • Redis 集群的数据分片

    概述:Redis 集群的数据分片是redis进行分布式存储的一种,它引入了hash槽的概念,每个redis节点存储...

  • redis补存

    Redis cluster集群分片策略: 1、第一步集群总共分配16384(0-16383)个槽位,平均分配到所有...

  • Redis 集群

    虚拟槽分区 redis集群使用的是基于hash的一种分区算法,称之为虚拟槽分区。 虚拟槽算法巧妙地使用了哈希空间,...

网友评论

      本文标题:Redis - 集群Hash槽分配

      本文链接:https://www.haomeiwen.com/subject/kzeikltx.html