Redis(三):Redis如何实现高可扩展?

Redis集群提高了Redis的可扩展性,Redis的集群方案主要有Redis Cluster和Codis。

Redis Cluster

Redis Cluster是Redis官方提供的去中心化集群方案,通过分片来进行数据共享,并提供复制和故障转移功能。

Redis Cluster如何分片?

Redis集群通过分片的方式来保存数据库中的键值对。集群的整个数据库被分为16384个槽,数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点可以负责0~16384个槽。

当数据库中的16384个槽都有节点在处理时,集群处于上线状态;如果有任何一个槽没有节点处理时,集群处于下线状态。

槽指派命令

通过向节点发送cluster addslots命令可以将一个或多个槽指派给该节点。

如何维护槽信息?

每个节点的clusterNode结构slots属性和numslot属性记录节点负责的槽信息。

clusterNode.slots是一个二进制数组,长度为16384/8=2048字节,共包含16384个二进制位。Redis对clusterNode.slots数组中的16384个二进制位进行编号,根据索引i上的二进制位值来判断节点负责哪些槽(二进制位值=1,表示节点负责处理槽i)。
clusterNode.numslot记录该节点负责的槽数量。

在这里插入图片描述

节点之间如何共享槽指派信息?

集群中的每个节点都知道16384个槽都分别被指派给了集群中的哪些节点。

每个节点会将自己的clusterNode.slots数组发送给集群中的其他节点,告知其他节点自己负责处理哪些槽。收到槽指派信息的节点会在自己的clusterState.nodes字典中查找该节点对应的clusterN

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值