JJava 知识库
JAVA INTERVIEW

高频面试题

Redis高级约 2 分钟

Redis 主节点突然宕机时,你们能接受丢多少数据和多久恢复?持久化与高可用怎么配置?

参考回答约 2 分钟 · 口语表达
我的判断

持久化与高可用先定 RPO/RTO:能丢多少数据、多久恢复,再决定 AOF、RDB、复制和故障转移配置。

如果 Redis 只是可重建缓存,主节点宕机时允许少量缓存丢失,我会更关注快速故障转移和防止同时回源压垮数据库。RDB 加 AOF everysec 通常足够,接受极端情况下约一秒窗口;如果数据承担幂等记录或任务状态,就要重新评估是否应该把权威状态放数据库,而不是靠 Redis 配置模拟强持久。

高可用会使用 Sentinel 或 Cluster,多副本跨故障域。故障演练要测:

  • 主节点断电到客户端恢复写入的时间;
  • 复制积压与 failover 时可能丢失的已确认写;
  • 全量同步对网络、磁盘和延迟的冲击;
  • 新主切换后应用连接是否及时刷新。

min-replicas-to-write 可以在副本不足时拒绝写,缩小数据丢失风险,但会牺牲可用性。这个取舍由业务确认,不能宣称主从复制天然零丢失。

同时保留独立备份与恢复演练。副本会同步误删,不能替代备份。

思路拆解问题分析

这题没有统一“最安全配置”。缓存、分布式锁和延时任务对丢数据的容忍完全不同。先把 数据是否可重建、允许的丢失窗口、恢复期间能否降级 说清楚,配置才有意义。