1. Redis主从复制架构全景解读
第一次在生产环境搭建Redis主从集群时,我盯着info replication命令输出的连接状态反复确认了五遍——那种既兴奋又忐忑的心情至今记忆犹新。主从复制作为Redis高可用体系的基石,其设计精妙之处在于用看似简单的机制解决了分布式系统中的核心难题。本文将用4000字深度拆解这个经典架构的实现逻辑,包含多个线上集群的实战经验总结。
主从复制的本质是通过数据同步实现读写分离,其核心价值体现在三个维度:
- 数据可靠性:从库作为主库的热备份,避免单点故障导致数据丢失
- 服务可用性:从库可快速接管服务(需配合哨兵/集群方案)
- 性能扩展:读请求分流到从库,主库专注写操作
生产环境警示:主从复制不保证强一致性!网络分区时可能出现数据丢失,金融级场景需要配合其他机制。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 主从复制核心流程拆解
2.1 全量同步(RDB快照传输)
当从节点首次连接主节点或复制偏移量(replication offset)不匹配时,会触发全量同步流程:
-
PSYNC协商阶段
从节点发送PSYNC ? -1命令(Redis 2.8+),主节点根据复制积压缓冲区(repl_backlog)判断能否部分同步。若不能则返回+FULLRESYNC <runid> <offset>响应。 -
RDB生成与传输
主节点执行bgsave生成RDB快照,通过socket传输给从节点。期间新写入命令会存入复制客户端缓冲区(client-output-buffer)。
bash复制# 主节点日志示例
[1912] 15 May 10:00:23.103 * Background saving started by pid 26421
[26421] 15 May 10:00:23.105 * DB saved on disk
[26421] 15 May 10:00:23.105 * RDB: 6 MB of memory used by copy-on-write
[1912] 15 May 10:00:23.205 * Background saving terminated with success
- **从节点加载RDB
