扫一扫二维码
进群一起备考
查看更多当前 - 案例分析 - Web应用设计
简单
案例题
2025年5月第3题
简单
案例题
2025年5月第3题
#必须掌握
#超纲
某互联网企业开发并部署了一套高并发电商系统,系统中的商品信息、用户购物车、热销榜单等高频数据均存储在 Redis 中以提高访问效率。随着业务规模扩大,单实例 Redis 出现了性能瓶颈和单点故障风险。为提升系统的可用性、扩展性和数据容灾能力,技术团队决定采用 Redis 的主从复制架构,将写操作集中在主节点(Master),将读操作分散到多个从节点(Slave)中。同时,系统还需支持主从自动同步机制,确保在主库故障后可以快速切换至从库,保障业务连续性。
分值(10分)
请根据 Redis 的主从架构原理和下图的同步流程,在图示中填入正确的关键步骤和指令。

参考答案
(1)从库向主库发送 PSYNC ? -1 或 SYNC 请求,表示首次同步请求
(2)BGSAVE 命令,主库收到请求后执行 BGSAVE,生成 RDB 快照
(3)主库将写操作追加到 backlog,用于稍后的增量复制
(4)主库将 RDB 文件通过 socket 传输给从库(传输全量快照)
(5)主库将 backlog 中积压的写命令(增量)发送给从库
凯恩解析
当 Redis 从库(Slave)第一次与主库(Master)建立复制关系时,会进行一次完整的数据同步,这一过程称为“全量同步”。其主要流程如下:
- 从库发起同步请求。从库在启动并配置主库地址后,主动向主库发送 PSYNC ? -1 命令(老版本使用 SYNC),表明自己是第一次同步,请求主库发送完整的数据副本。
- 主库执行 BGSAVE 生成快照。主库接收到同步请求后,会启动一个后台子进程执行 BGSAVE 命令,生成当前数据库的 RDB 快照文件(即数据库当前状态的完整镜像)。此时,主库仍然可以继续响应客户端的写入请求。
- 写操作被追加到复制缓冲区。由于 BGSAVE 执行期间主库仍然对外提供服务,客户端可能继续写入数据。为了不丢失这部分写操作,主库会将这些命令追加到复制积压缓冲区(replication backlog)中,准备后续发送给从库。
- 主库发送 RDB 快照给从库。当 BGSAVE 完成后,主库将生成的 RDB 文件通过网络发送给从库。从库收到文件后会清空原有数据,并加载这份 RDB 快照,数据状态回滚至主库执行 BGSAVE 时的快照状态。
- 主库发送增量命令流。RDB 加载完成后,从库继续接收主库发送的 backlog 缓冲区中的写命令。这些命令是在 BGSAVE 执行期间产生的,用于追平主从之间的数据差异。
- 同步完成。从库执行完 backlog 中的所有写操作后,主从数据状态保持一致。此时主从之间进入“命令传播阶段”,即主库每次收到写命令时,都会实时同步给从库,从库保持实时追随主库的数据变更。