下面是一篇适合 技术博客 / Java 开发日记风格 的内容,系统讲一下 Redis 主从复制的原理及作用。
【Java 开发日记】我们来说一说 Redis 主从复制的原理及作用
在实际的后端系统中,如果只部署一个 Redis 实例,一旦 Redis 宕机,系统缓存就会全部失效。因此在生产环境中,我们通常会使用 主从复制(Master-Slave Replication) 来提升系统的稳定性与性能。
今天简单整理一下 Redis 主从复制的作用与底层原理。
涉及的技术:Redis
一、什么是 Redis 主从复制
Redis 主从复制指的是:
一个 Master(主节点) 可以同步数据到多个 Slave(从节点)。
结构如下:
Master
/ | \
Slave Slave Slave
特点:
- Master 负责 写操作
- Slave 负责 读操作
- 数据由 Master 同步到 Slave
二、Redis 主从复制的作用
在企业级系统中,主从复制主要有 3 个核心作用。
1 读写分离(提高性能)
通常情况下:
写操作 → Master
读操作 → Slave
例如:
用户请求
│
├── 写缓存 → Master
└── 读缓存 → Slave
这样可以:
- 减少 Master 压力
- 提高系统并发能力
2 数据备份
Slave 节点保存 Master 的完整数据副本。
如果 Master 出现问题:
Slave 可以升级为 Master
这就是高可用架构的基础。
3 高可用架构基础
Redis 的高可用组件:
- Redis Sentinel
- Redis Cluster
这些组件都依赖 主从复制机制。
三、Redis 主从复制原理
Redis 主从复制大致分为 两个阶段:
1 初次同步(全量复制)
2 持续同步(增量复制)
四、第一次同步(全量复制)
当 Slave 第一次连接 Master 时,会触发 全量复制。
流程如下:
Slave → Master:发送 sync/psync 请求
Master → Slave:执行数据同步
详细步骤:
1 Slave 发送同步请求
Slave 启动后执行:
PSYNC
请求同步数据。
2 Master 创建 RDB 快照
Master 执行:
BGSAVE
生成 RDB 文件。
RDB 是 Redis 的 数据快照文件。
3 Master 发送 RDB 文件
流程:
Master
│
├─生成 RDB
│
└─发送 RDB → Slave
Slave 接收后加载数据。
4 同步缓冲区命令
在生成 RDB 的过程中:
如果有新的写命令:
SET
DEL
INCR
Redis 会把这些命令存入:
replication buffer
RDB 发送完后,再发送这些命令。
最终:
Slave 数据和 Master 完全一致。
五、增量复制(命令传播)
当第一次同步完成后,就进入 增量复制阶段。
流程:
Master 执行写操作
│
▼
写命令发送给 Slave
│
▼
Slave 执行相同命令
例如:
SET user:1 "Tom"
Master 会把这条命令发送给所有 Slave。
这样就实现 实时同步。
六、PSYNC 部分复制机制
在 Redis 2.8 以后,引入了 PSYNC 机制。
解决问题:
Slave 短暂断线后不需要重新全量同步。
PSYNC 依赖两个核心机制:
Replication ID
Offset
Replication ID
每个 Master 有一个唯一 ID。
用于识别复制关系。
Offset
表示复制偏移量。
Master offset = 1000
Slave offset = 998
Slave 只需要补充:
998 → 1000
即可完成同步。
七、复制积压缓冲区
Redis 使用一个缓冲区:
replication backlog buffer
作用:
保存最近的写命令。
如果 Slave 断线时间不长:
只需补发缺失命令
不需要全量复制。
八、主从复制配置
配置一个 Slave 非常简单。
例如:
slaveof 192.168.1.10 6379
含义:
当前 Redis 作为从节点
复制 192.168.1.10:6379
在 Redis 5 之后:
replicaof
例如:
replicaof 192.168.1.10 6379
九、Redis 主从复制特点
优点:
✔ 实现读写分离
✔ 提高系统性能
✔ 数据冗余备份
✔ 高可用基础
缺点:
❌ 主节点压力较大
❌ 存在复制延迟
❌ 主节点单点问题
因此通常还需要:
- Redis Sentinel
- Redis Cluster
来实现真正的高可用。
十、主从复制架构图
典型生产架构:
Master
│
┌─────────┴─────────┐
│ │
Slave1 Slave2
│
读请求
请求分布:
写请求 → Master
读请求 → Slave
十一、总结
Redis 主从复制的核心思想其实很简单:
Master 负责写
Slave 负责读
数据通过复制同步
同步过程分为:
1 全量复制(RDB)
2 增量复制(命令传播)
3 PSYNC 断点续传
这也是 Redis 构建 高性能 + 高可用缓存系统 的基础。
如果你愿意,我可以再帮你写一篇 下一篇开发日记(很多 Java 面试必问):
- Redis 哨兵模式 Sentinel 原理
- Redis Cluster 分片机制
- Redis 缓存雪崩 / 穿透 / 击穿
- Redis 持久化 RDB vs AOF
- Redis 分布式锁实现
这些基本都是 Java 后端面试高频题。