D
AI
学习工作台
8 周后端冲刺2026-05-221 分钟阅读

Redis 持久化与高可用

RDB/AOF、主从复制、哨兵与 Cluster 分片

8周冲刺week6Redis高可用记笔记标记疑惑

持久化

RDB

定时 SAVEbgsave fork 子进程写快照。COW 可能导致内存峰值(联系 week04-virtual-memory)。

AOF

每条写命令追加;everysec fsync 平衡性能与安全;AOF rewrite 生成最小命令集。

混合持久化(RDB + AOF 增量)缩短重启时间。

主从复制

一主多从,读写分离。复制延迟导致 从库读旧数据;强一致读走主或跟踪 offset。

断线重连:partial resync 用 replication backlog。

哨兵 Sentinel

监控主从,自动 failover 选举新主;客户端连接哨兵发现当前 master。适合中小规模。

Redis Cluster

去中心化分片,最少 3 主 3 从。不支持多 key 事务跨 slot(除非 hash tag {user}:1 {user}:2 同 slot)。

扩容:迁移 slot,MOVED 引导客户端。

高可用对比

| 方案 | 场景 | |------|------| | 主从 + 哨兵 | 中等 QPS | | Cluster | 大数据量水平扩展 | | 代理 Twemproxy/Codis | 老架构,了解 |

运维要点

  • maxmemory + eviction policy。
  • 慢日志、latency doctor。
  • 大 key 扫描与拆分。

与 MQ 衔接

持久化保证 Redis 自身数据;跨服务可靠用 Kafka(week06-kafka-reliability)。

实战巩固与面试表达

本篇属于 8 周冲刺 week06-redis-persistence-cluster 主题。复习时先闭卷回答 frontmatter 中三张 flashcard,再展开口述两个「为什么」:为什么这种方案能 work、边界失败时如何降级。与相邻章节对照:算法篇强调复杂度与模板,Go 篇强调工程默认写法,中间件篇强调线上故障案例。

动手与自检清单

用 25 分钟限时做 1 道相关练习题或画出一张架构/数据结构示意图;用 5 分钟写 STAR 片段说明你在项目里是否用过类似技术。记录 3 个面试追问及你的标准答法,存入 /zh/notebook/master-plan 笔记。若某点不熟,回到对应 /chapters 交互 Lab 重新走一遍流程,比死记卡片更有效。

易错点提醒

避免只背名词不会画图;避免只说优点不谈 trade-off(性能、一致性、运维成本至少提一项);避免把学习 Demo 说成百万 QPS 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。

自检

画 failover 时序;说明 Cluster 下执行 MGET 多 slot 问题。面试:Redis 单线程为何还用多 IO 线程?

知识卡片

问题

RDB 与 AOF 取舍?

点击翻转查看答案

答案

RDB 快照恢复快、文件紧凑但可能丢最后一次快照后数据;AOF 记录写命令更可持久,rewrite 压缩体积。

问题

主从复制过程?

点击翻转查看答案

答案

PSYNC:全量 RDB 传输 + 增量 replication buffer;从库只读,异步复制可能丢最近写入(需等 ACK 策略)。

问题

Redis Cluster 如何分片?

点击翻转查看答案

答案

16384 slot,CRC16(key) % 16384;MOVED/ASK 重定向;无中心化代理,客户端/smart 客户端路由。