Redis是大型架构核心,下面我详解Redis主从复制@mikechen
Redis主从复制
主从复制(Replication), 是 Redis 实现高可用、与读写分离的核心机制。

它允许一个主节点(Master)的数据,实时同步到一个或多个从节点(Slave),从而实现:
数据冗余:从节点保存主节点的数据副本;
读写分离:主节点负责写,从节点负责读;
高可用性:主节点宕机后,从节点可快速提升为主节点。
简而言之:Redis 主从复制 = 数据的实时备份 + 读写分离 + 故障切换基础。
Redis主从复制原理
Redis主从之间的复制分为两部分:全量复制和增量复制。
1.Redis全量复制过程
当一个从节点首次连接主节点,或与主节点断开较久之后需要恢复同步时,系统会触发全量复制。
具体流程如下:

握手与认证:从节点向主节点发送复制请求(PSYNC 或旧版的 SYNC)。
包含,自身已同步的偏移量(replication offset)或为空。
主节点生成 RDB 快照:主节点创建当前数据库的 RDB 快照。
在后台 fork 子进程 dump 数据,并在此过程中继续接收来自客户端的写命令。
传输与加载:主节点将生成的 RDB 文件通过网络发送给从节点。
从节点接收后将快照写入本地并加载到内存中,完成数据的基础一致性。
2.Redis增量复制过程
当主从连接保持且网络、或短暂故障后重新建立连接时,Redis 会尽量进行部分(增量)复制以节约资源。
流程如下:

保持积压缓冲区:主节点维护一个固定大小的环形缓冲区,记录最近的写命令流以及每条命令对应的全局复制偏移量。
偏移量对比:当从节点重新连接并发送其上次确认的偏移量时。
主节点检查该偏移量是否仍在缓冲区中,即主节点自该偏移量以来未丢弃对应命令。
部分重同步(PSYNC):若偏移量在缓冲区内,主节点直接将自该偏移量之后的命令增量发送给从节点。
从节点应用这些命令,复制过程无需再次生成 RDB,延迟和资源消耗显著降低。
