Redis 的主从复制模式有哪些?

Redis支持主从复制,主要有三种模式:

  1. Master-Slave
    最简单的主备模式。
    一个主节点(Master)可以有多个从节点(Slave)。
    Slave 节点从主节点同步数据,从节点只能读不能写。
    优点: 在主节点故障时可以由从节点提供服务。
    缺点:单点故障,主节点发生故障整个系统不可用。
  2. Master-Slave with Sentinel
    使用哨兵模式,由多个 Sentinel 节点监控 Master 和 Slave。
    如果 Master 节点故障,Sentinel 会自动把一个 Slave 选举为 Master,从而提供服务。
    优点:实现了更高可用性,自动故障转移。
  3. Cluster
    所有节点都可以读写,并提供集群Failover。
    每个节点负责不同的 Range 分片。如果一个节点宕机,相关数据将转移到其他节点。
    优点:读写分离,高可用性与负载均衡。
    并且对客户端透明。

主从复制的基本工作流程:

  1. Slave 节点与 Master 同步。
  2. Master 保存状态快照后,同步给 Slave。
  3. Slave 同步 Master 的全量数据。
  4. Master 在接收写操作时,将相关增量写操作同步给 Slave。
  5. Slave 在接收到 master 命令时,重新执行这些写命令。

综上:

  • Master-Slave 模式简单但单点故障
  • Sentinel模式自动故障切换但不负载均衡
  • Cluster 模式高可用与负载均衡但较复杂

三种模式各有优劣,需要查看具体需求来选择。