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

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

Redis主从复制

主从复制(Replication), 是 Redis 实现高可用、与读写分离的核心机制。

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

它允许一个主节点(Master)的数据,实时同步到一个或多个从节点(Slave),从而实现:

数据冗余:从节点保存主节点的数据副本;

读写分离:主节点负责写,从节点负责读;

高可用性:主节点宕机后,从节点可快速提升为主节点。

简而言之:Redis 主从复制 = 数据的实时备份 + 读写分离 + 故障切换基础。

 

Redis主从复制原理

Redis主从之间的复制分为两部分:全量复制和增量复制。

1.Redis全量复制过程

当一个从节点首次连接主节点,或与主节点断开较久之后需要恢复同步时,系统会触发全量复制。

具体流程如下:

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

握手与认证:从节点向主节点发送复制请求(PSYNC 或旧版的 SYNC)。

包含,自身已同步的偏移量(replication offset)或为空。

主节点生成 RDB 快照:主节点创建当前数据库的 RDB 快照。

在后台 fork 子进程 dump 数据,并在此过程中继续接收来自客户端的写命令。

传输与加载:主节点将生成的 RDB 文件通过网络发送给从节点。

从节点接收后将快照写入本地并加载到内存中,完成数据的基础一致性。

 

2.Redis增量复制过程

当主从连接保持且网络、或短暂故障后重新建立连接时,Redis 会尽量进行部分(增量)复制以节约资源。

流程如下:

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

保持积压缓冲区:主节点维护一个固定大小的环形缓冲区,记录最近的写命令流以及每条命令对应的全局复制偏移量。

偏移量对比:当从节点重新连接并发送其上次确认的偏移量时。

主节点检查该偏移量是否仍在缓冲区中,即主节点自该偏移量以来未丢弃对应命令。

部分重同步(PSYNC):若偏移量在缓冲区内,主节点直接将自该偏移量之后的命令增量发送给从节点。

从节点应用这些命令,复制过程无需再次生成 RDB,延迟和资源消耗显著降低。

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