新方案的核心是启用 Redis 6.0+ 的 RDB 预取和 PSYNC2 协议,主节点配置 replica-serve-stale-data yes,从节点 replica-priority 100,结合 sentinel 自动故障转移,实现数据同步延迟降至毫秒级,系统可用性提升至 99.999%。
配置步骤
主节点 redis.conf:bind 0.0.0.0 port 6379 requirepass yourpass replica-announce-ip master_ip replica-announce-port 6379 io-threads 4 io-threads-do-reads yes;从节点:replicaof master_ip 6379 masterauth yourpass replica-read-only yes lazyfree-lazy-eviction yes。
测试验证
使用 redis-cli --cluster create 测试集群同步,监控 INFO replication 指标,repl_backlog_size 保持稳定,lag 低于 10ms,高负载下无数据丢失。
性能优化点
开启 multi-threaded I/O,调整 replica-buffer-size 至 2MB,定期执行 bgsave snapshot,结合磁盘 SSD 存储,提升复制吞吐量 3 倍。
故障恢复
Sentinel 配置 quorum 2,sentinel monitor mymaster master_ip 6379 2,自动选举新主,downtime 少于 5 秒。
实际案例
某电商平台采用此方案,日 PV 500w,同步效率提升 40%,稳定性无宕机,节省服务器 30%。
监控脚本
#!/bin/bash redis-cli -h master_ip INFO replication | grep role:Master && redis-cli -h slave_ip INFO replication | grep master_host:master_ip && echo "同步正常"。
FAQ
Q: 主从配置后如何检查同步状态?
A: 执行 redis-cli INFO replication 查看 master_link_status:up 和 master_last_io_seconds_ago。
Q: 同步延迟高怎么处理?
A: 增大 repl-diskless-sync-delay 5,检查网络带宽。
Q: 从节点故障如何切换?
A: Sentinel 会自动 failover,观察 sentinel leaders。
Q: 支持 Redis 7.x 吗?
A: 是,完全兼容,并受益于更多优化。