Redis Replication 深度解析:同步机制 + 命令详解 + 面试真题
Redis Replication 深度解析:同步机制 + 命令详解 + 面试真题
Redis 的主从同步(Replication)是其高可用架构的基石,不论是哨兵模式、集群架构,还是读写分离,主从机制都是绕不开的核心。本篇从原理、流程、命令、问题处理到面试答题技巧,一网打尽!
一、主从同步是干嘛的?
在 Redis 中,可以通过配置让一个 Redis 节点(从节点)复制另一个节点(主节点)的数据,从而实现数据冗余、高可用、读写分离。
二、主从结构图示意
Master(可写)
│
┌──────┼──────┐
↓ ↓ ↓
Slave1 Slave2 Slave3(只读)
- 主节点负责写请求
- 从节点同步主节点数据,只提供读请求,缓解主节点压力
三、主从同步的分类
同步类型 | 描述 |
---|---|
全量同步 | 初次同步/数据不一致时 |
增量同步 | 使用复制缓冲区,追上中断数据 |
四、主从同步的核心流程
✅ 第一步:建立连接
从节点发送命令:
SLAVEOF <master-ip> <port>
建立 TCP 连接后,从节点向主节点发送 PSYNC
命令。
✅ 第二步:执行同步(分两种)
1)全量同步(FULL RESYNC)
发生条件:
- 从节点第一次连接主节点
- 主节点没有复制积压缓冲区
- 主节点重启或复制ID变化
主节点执行流程:
1. 主节点执行 BGSAVE 生成 RDB 快照
2. 同时将新写命令写入缓冲区
3. 快照生成完后发给从节点
4. 从节点加载 RDB 文件,再执行缓冲区命令
2)部分同步(PARTIAL RESYNC)
发生条件:
- 网络闪断后,缓冲区中还有未同步的数据
- 从节点携带复制偏移量和
runid
请求同步
主节点通过 replication backlog buffer
恢复中断前后丢失的数据。
五、主从同步关键参数
# 开启主从复制(slave端)
slaveof <master-host> <port>
# 设置复制缓冲区大小
repl-backlog-size 1mb
# 复制缓冲区保留时长
repl-backlog-ttl 3600
# 设置主从连接断开多久自动重试
repl-timeout 60
六、主从复制延迟的原因?
- 主从之间的网络延迟
- 从节点复制缓冲区处理不及时
- 从节点执行写操作速度慢(如写 AOF)
- 主节点写入量过大
面试技巧:可以提到开启
min-slaves-to-write
参数,保护主节点写入安全性。
七、读写分离实践
- 主节点负责写入
- 从节点处理读操作,提高并发
例如 SpringBoot 配置中设置:
spring:
redis:
sentinel:
master: mymaster
nodes: 127.0.0.1:26379,127.0.0.1:26380
lettuce:
read-from: replica_preferred
八、主从切换风险点及面试问答 🔥
❓主从切换时,从节点数据不一致怎么办?
答:可借助哨兵机制或 Redis Cluster 自动完成主从切换,但仍可能因未同步完导致短暂数据不一致。
❓从节点不可用,是否影响主节点?
答:不会影响主节点写入,但读写压力可能增加。
❓主从复制过程中主节点挂掉怎么办?
答:引入 Sentinel 或 Cluster 自动检测,提升可用性。
九、与 Sentinel、Cluster 的关系?
架构 | 主从角色 | 作用 |
---|---|---|
Sentinel | 管理主从、故障转移 | 哨兵监控 + 自动主从切换 |
Cluster | 分片 + 多主 | 多主分片,但每主也可以有从 |
本质上 Sentinel 和 Cluster 架构,都是基于主从复制做的扩展。
🔟 总结一句话
Redis 主从同步是 Redis 高可用的基石,掌握同步流程、部分/全量机制、复制缓冲、延迟处理,是成为高级工程师的必经之路。
**
✅ 总结回顾
通过本篇文章,我们深入了解了 Redis 主从同步的核心机制,从同步类型(全量与部分)、同步流程、关键参数配置,到常见问题与面试技巧进行了全面剖析。主从复制不仅是 Redis 构建高可用架构的基础,也是实现读写分离、数据冗余的关键保障。在实际开发与运维中,理解这些底层原理,能够帮助我们更好地排查问题、优化系统,并在面试中自信应对相关问题。未来,不论是在 Sentinel 的高可用场景,还是在 Redis Cluster 的分布式环境中,主从同步永远是绕不开的底层能力,值得每一位工程师深入掌握!
- 点赞
- 收藏
- 关注作者
评论(0)