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

本文深入探讨了Redis实现高可扩展性的两种集群方案——Redis Cluster和Codis。Redis Cluster通过分片策略,将16384个槽分配给节点,而Codis采用代理中间件方式,划分1024个槽。两者在槽位迁移、分布事务和节点定位上有不同,Redis Cluster支持分布式事务,直接定位目标节点,而Codis依赖ZooKeeper同步槽位信息。
摘要由CSDN通过智能技术生成

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个槽都分别被指

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值