Redis的主从复制和哨兵机制

2025年Java面试宝典最新版:
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g 提取码: 9b3g
为什么面试总问Redis主从复制?
咱们都知道Redis是个单线程的玩意儿,虽然性能强但单节点扛不住高并发和大数据量。这时候主从复制(Replication)就派上用场了!简单来说就是让一个主节点(Master)带着一群小弟(Slave),主节点写数据,从节点负责读数据。
主从复制的核心是增量同步和全量同步。当从节点第一次连接主节点时,主节点会生成RDB快照发给从节点(全量同步)。之后主节点的每个写命令都会通过复制缓冲区传给从节点(增量同步)。
这里有个坑要注意:复制缓冲区溢出!如果主节点写入量太大,缓冲区可能撑爆导致反复全量同步。解决方案是合理设置repl-backlog-size参数,或者升级Redis版本用PSYNC2协议。
主从复制配置实战
- 配置从节点:在从节点的配置文件里加一句
replicaof <masterip> <masterport> - 认证配置:如果主节点有密码,加上
masterauth <password> - 只读模式:从节点默认只读,想关闭可以设置
replica-read-only no(不建议) - 网络优化:主从节点最好部署在内网,避免网络波动导致复制中断

哨兵机制如何保命?
主从复制解决了读写分离的问题,但万一主节点挂了怎么办?这时候哨兵(Sentinel)就登场了!
哨兵其实是个监控程序,主要干三件事:
- 监控:每秒ping主节点和从节点
- 通知:发现节点宕机立马发告警
- 自动故障转移:主节点挂了自动选新主
面试必考题:哨兵怎么选新主?
首先淘汰掉网络不好的从节点,然后看复制偏移量(谁的数据最新),最后选运行时间最长的。整个过程大概10-30秒,这段时间服务会不可用,所以生产环境建议用Redis Cluster。
哨兵部署的坑点
- 最少3个哨兵:避免脑裂问题(比如2个哨兵同时认为主节点挂了)
- 配置同步:所有哨兵的配置文件要一致,特别是
sentinel monitor mymaster这行 - 超时参数:
down-after-milliseconds别设太小,否则网络波动就误判 - 客户端适配:Java客户端要用支持Sentinel的库,比如Jedis或Lettuce
如果大家需要购买面试鸭会员,可以通过面试鸭返利网找到我,购买会员立返25元!
主从+哨兵架构图

这种架构能扛住单点故障,但横向扩展能力有限。对于海量数据场景,还是要上Redis Cluster。不过面试官就爱问主从和哨兵,因为这是理解Redis高可用的基础!下次面试被问到,你就把复制流程和哨兵选举机制讲清楚,绝对加分!


