Redis主从复制详解(图文全面总结)

Redis是大型架构核心,下面我详解Redis主从复制@mikechen

Redis主从复制

Redis 的主从复制(Master-Slave Replication),是 Redis 高可用架构的基石。

Redis主从复制详解(图文全面总结)

无论是哨兵(Sentinel)模式还是集群(Cluster)模式,底层都依赖主从复制来保证数据的一致性和冗余。

简单来说,主从复制实现了:数据备份、读写分离、压力分摊。

 

Redis主从复制原理

Redis 采用基于主从(master-slave,现多称为 primary-replica)的复制模型。

主节点负责写操作与数据变更,若干从节点异步接收并应用主节点的写命令。

Redis主从复制详解(图文全面总结)

复制流程可分为初次同步(full sync)与增量同步(partial sync):

初次同步:当从节点与主节点建立连接且无可用复制偏移或复制缓冲断档时。

主节点生成 RDB 快照并将其发送给从节点,从节点载入快照后接收主节点发送的持续命令流完成状态同步。

增量同步:主节点维护复制积压缓冲区(replication backlog)。

若连接短暂断开且断点仍在积压缓冲区内,从节点可以基于复制偏移仅接收缺失命令,无需全量重同步,减少带宽与时延。

复制是默认异步的:主节点在返回写命令成功后即刻响应客户端。

并不会等待所有从节点确认,因此存在主从数据短暂不一致的窗口。

为提高数据安全性,可启用半同步或使用 Redis Sentinel、Redis Cluster 等机制实现更复杂的一致性与高可用策略。

 

案例

场景:主库宕机自动切换。

架构:1 主 2 从 + 3 哨兵 + RDB/AOF 持久化。

实施:哨兵 conf:sentinel monitor mymaster 127.0.0.1 6379 2。

主挂后,哨兵选举从库为主,通知客户端(sentinel get-master-addr-by-name)。

原主恢复后,自动变从。

效果:切换时间<30s,数据丢失<1s 命令。

痛点&解决:选举脑裂 → 用 quorum=2 + down-after-milliseconds=5000 调优。

 

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧