主从复制
Redis 主从复制是实现读写分离和数据备份的基础架构。
复制原理
工作流程
Master (RW) Slave (R)
│ │
│──── SYNC ────────────────>│
│ │
│<─── SYNC + RDB ──────────│
│ │
│──── RDB Data ───────────>│
│ │
│──── Command Propagation ─>│复制步骤
- 建立连接:Slave 连接 Master
- 发送 SYNC:Slave 发送同步命令
- BGSAVE:Master 执行后台保存
- 传输 RDB:Master 发送 RDB 文件
- 命令传播:Master 持续发送写命令
配置方式
配置文件
conf
replicaof 192.168.1.100 6379
masterauth your_password
replica-read-only yesDocker Compose
yaml
version: '3.8'
services:
redis-master:
image: redis:7.2.4
ports:
- "6379:6379"
redis-slave:
image: redis:7.2.4
ports:
- "6380:6379"
command: redis-server --replicaof redis-master 6379读写分离
go
// 写操作用 Master
master := redis.NewClient(&redis.Options{
Addr: "master:6379",
})
// 读操作用 Slave
slave := redis.NewClient(&redis.Options{
Addr: "slave:6380",
})
master.Set(ctx, "key", "value", 0)
val, _ := slave.Get(ctx, "key").Result()管理命令
bash
# 查看复制状态
INFO replication
# 主从切换
REPLICAOF NO ONE # 提升为 Master最佳实践
- 监控复制延迟
- 使用哨兵自动切换
- 关键数据读 Master
在下一章中,我们将学习哨兵和集群机制。