Redis集群的实现方式

304 阅读2分钟

Redis 集群有几种实现方式,一个是主从集群、一个是 Redis Cluster。

主从集群

主从集群,就是在 Redis 集中包括一个 Master 节点和多个 Slave 节点。

Master 负责数据的读写,Slave 节点负责数据的读取。 Master 上收到的数据变更,会同步到 Slave 节点上实现数据的同

Redis 主从集群不提供容错和恢复功能,一旦 Master 节点挂了,不会自动选出 新的 Master,导致后续客户端所有写请求直接失败。

哨兵机制

Redis 提供了哨兵机制,专门用来监听 Redis 主从集群提供故障的自动处理能力。

哨兵会监控 Redis 主从节点的状态,当 Master 节点出现故障,会自动从剩余的 Slave 节点中选一个新的 Master

哨兵模式下虽然解决了 Master 选举的问题,但是在线扩容的问题还是没有解决。

Redis Cluster

于是就有了第三种集群方式,Redis Cluster,它实现了 Redis 的分布式存储,也 就是每个节点存储不同的数据实现数据的分片。

在 Redis Cluster 中,引入了 Slot 槽来实现数据分片,Slot 的整体取值范围是 0~16383,每个节点会分配一个 Slot 区间当我们存取 Key 的时候,Redis 根据 key 计算得到一个 Slot 的值,然后找到对应的节点进行数据的读写。

在高可用方面,Redis Cluster 引入了主从复制模式, 一个 Master 节点对应一 个或多个 Slave 节点,当 Master 出现故障,会从 Slave 节点中选举一个新的 Master 继续提供服务。

Redis Cluster 虽然解决了在线扩容以及故障转移的能力,但也同样有缺点,比 如 客户端的实现会更加复杂Slave 节点只是一个冷备节点,不提供分担读操作的压力

对于 Redis 里面的批量操作指令会有限制 因此主从模式和 Cluster 模式各有优缺点,在使用的时候需要根据场景需求来选 择。