Redis支持主从复制,主要有三种模式:
- Master-Slave
最简单的主备模式。
一个主节点(Master)可以有多个从节点(Slave)。
Slave 节点从主节点同步数据,从节点只能读不能写。
优点: 在主节点故障时可以由从节点提供服务。
缺点:单点故障,主节点发生故障整个系统不可用。 - Master-Slave with Sentinel
使用哨兵模式,由多个 Sentinel 节点监控 Master 和 Slave。
如果 Master 节点故障,Sentinel 会自动把一个 Slave 选举为 Master,从而提供服务。
优点:实现了更高可用性,自动故障转移。 - Cluster
所有节点都可以读写,并提供集群Failover。
每个节点负责不同的 Range 分片。如果一个节点宕机,相关数据将转移到其他节点。
优点:读写分离,高可用性与负载均衡。
并且对客户端透明。
主从复制的基本工作流程:
- Slave 节点与 Master 同步。
- Master 保存状态快照后,同步给 Slave。
- Slave 同步 Master 的全量数据。
- Master 在接收写操作时,将相关增量写操作同步给 Slave。
- Slave 在接收到 master 命令时,重新执行这些写命令。
综上:
- Master-Slave 模式简单但单点故障
- Sentinel模式自动故障切换但不负载均衡
- Cluster 模式高可用与负载均衡但较复杂
三种模式各有优劣,需要查看具体需求来选择。