Redis(远程字典服务)从基础到精通:知识图谱与复习路线
本文件是 Redis(远程字典服务)模块的唯一导航入口,负责定义 1.4.1 至 1.4.8 的职责边界、依赖顺序、旧题迁移、版本口径、必画图、完成判定和续接方法。它不写机制长答案,也不建立章节题库;详细原理、数据演绎、项目话术和排障证据分别落到唯一分册。
1. 使用方式与范围
- 旧题唯一来源:
12-Redis从基础到精通.md。 - 正式教材目录:
12-Redis从基础到精通/,按 00 至 08 编号维护。 - 深度目标:L4(精通级),能够解释概念、设计动机、底层结构、执行顺序、复杂度、失败边界、验证证据和项目取舍。
- 迁移原则:一道旧题只能有一个正文归属;其他分册需要使用时,只提供一句边界说明和真实相对链接。
- 版本原则:先确认 Redis(远程字典服务)实际版本、部署形态、配置和客户端,再陈述机制;不把某一小版本或某一种部署的行为写成永久结论。
- 过程原则:本轮减少 TDD(测试驱动开发)和逐篇独立复核,每篇只做内容审查、术语审计、图形真实渲染和空白字符检查。
2. 知识图谱与依赖
2.1 模块知识树
flowchart LR
A["1.4 Redis(远程字典服务)精通体系"]
subgraph L1["机制基础"]
B["1.4.1 数据结构与命令语义"] --> C["1.4.2 事件循环与网络模型"]
end
subgraph L2["数据安全与高可用"]
D["1.4.3 持久化与复制"] --> E["1.4.4 主从、哨兵与集群"]
end
subgraph L3["业务正确性"]
F["1.4.5 缓存一致性与缓存问题"] --> G["1.4.6 分布式锁全景"]
end
subgraph L4["工程闭环"]
H["1.4.7 延迟队列、限流与项目案例"] --> I["1.4.8 线上排障与综合题库"]
end
A --> B
C --> D
E --> F
G --> H
B -. "结构能力" .-> F
C -. "延迟边界" .-> G
E -. "故障窗口" .-> G
E -. "拓扑证据" .-> I这张 Mermaid(图表语法)图表达唯一依赖:数据结构和命令语义是起点;事件循环解释延迟与阻塞;持久化和复制支撑高可用;一致性与锁必须建立在部署、复制和失败窗口之上;项目案例与排障只消费前述机制,不重复维护机制正文。
2.2 一次数据请求的跨章路径
sequenceDiagram
participant C as 客户端
participant N as 网络与事件循环
participant K as 键空间与数据结构
participant P as 持久化与复制
participant H as 高可用节点
participant O as 可观测与排障
C->>N: 发送命令与参数
N->>N: 读取、解析、排队
N->>K: 串行执行命令语义
K-->>N: 返回结果与变更信息
N->>P: 传播写命令
P->>H: 日志落盘或复制偏移推进
alt 正常写回
N-->>C: 返回响应
else 阻塞、复制延迟或切换
N->>O: 暴露延迟、错误和积压信号
O-->>C: 降级、重试或失败响应
end这张 Mermaid(图表语法)时序图不是承诺每条写命令都同步落盘或同步复制,而是提供定位坐标:01 解释键和值,02 解释网络与排队,03 解释落盘和复制,04 解释切换,08 根据日志、指标和命令输出确定故障发生在哪一段。
2.3 三条推荐复习路线
flowchart LR
S["选择复习目标"]
A1["基础复习:01 数据结构"] --> A2["02 事件循环"] --> A3["03 持久化与复制"] --> A4["04 高可用"]
B1["原理深挖:02 阻塞模型"] --> B2["03 复制窗口"] --> B3["05 一致性"] --> B4["06 锁安全"]
C1["项目冲刺:05 缓存治理"] --> C2["06 分布式锁"] --> C3["07 项目案例"] --> C4["08 排障与口述"]
S --> A1
S --> B1
S --> C1
A4 --> R["画图、数据演绎、口述复盘"]
B4 --> R
C4 --> R- 基础复习适合第一次建立完整主线,要求能解释一个请求从连接到响应、从内存变更到恢复的全过程。
- 原理深挖适合准备高级追问,重点是阻塞、异步复制、故障窗口、最终一致性和锁租约的失败边界。
- 项目冲刺适合面试前复述,重点绑定 WMS(仓储管理系统)库存防超卖、支付回调幂等、跨境物流、Runner(执行器)调度、异步任务和 IoT(物联网)报警风暴治理。
2.4 事故定位路线
flowchart TD
A["现象:超时、错误、数据不一致或节点切换"]
B["确认边界:版本、拓扑、客户端、变更时间"]
C["先止血:限流、隔离、降级、切只读或回退"]
D["采集证据:延迟、慢命令、内存、复制、集群状态"]
E{"主要证据落在哪一层"}
F["02 网络排队、慢命令与阻塞"]
G["03 落盘、复制偏移与恢复"]
H["04 哨兵、槽位与故障转移"]
I["05 失效风暴、热键与一致性窗口"]
J["06 租约、续期、误删与旧持有者写入"]
K["08 根因验证、修复、回归与复盘"]
A --> B --> C --> D --> E
E --> F --> K
E --> G --> K
E --> H --> K
E --> I --> K
E --> J --> K事故处理必须先记录现场、再做推断。SLOWLOG(慢查询日志)、INFO(信息统计命令)、延迟监控、客户端连接池、复制偏移、哨兵状态、集群槽位和业务幂等流水属于不同证据层,不能只凭“Redis(远程字典服务)变慢了”直接归因。
3. 01 至 08 唯一职责与依赖
| 编号 | 目标文件 | 唯一职责 | 主要依赖 | 禁止重复维护 |
|---|---|---|---|---|
| 1.4.1 | 01-数据结构命令语义.md | 对象、底层编码、数据类型、命令原子性、事务、Lua(脚本语言)、管道和流。 | 无,模块机制起点。 | 事件循环、高可用和锁全景。 |
| 1.4.2 | 02-事件循环与网络模型.md | 请求生命周期、I/O(输入输出)多路复用、线程边界、阻塞源与尾延迟。 | 1.4.1 的命令复杂度。 | 持久化文件和故障转移细节。 |
| 1.4.3 | 03-持久化与复制.md | RDB(快照持久化)、AOF(追加日志)、恢复、全量复制与部分重同步。 | 1.4.1、1.4.2。 | 哨兵选主、槽路由和锁实现。 |
| 1.4.4 | 04-主从哨兵与集群.md | 单机、主从、哨兵、集群选型,故障转移、脑裂、槽路由和扩缩容。 | 1.4.3 的复制语义。 | 持久化文件格式和业务锁正文。 |
| 1.4.5 | 05-缓存一致性与缓存问题.md | Cache Aside(旁路缓存)、穿透、击穿、雪崩、过期淘汰、热键与大键治理。 | 1.4.1、1.4.2、1.4.4。 | 把锁作为一致性的唯一方案。 |
| 1.4.6 | 06-分布式锁全景.md | JVM(Java 虚拟机)锁对比、租约、Lua(脚本语言)解锁、Redisson(Redis 客户端)、RedLock(红锁)与 Fencing Token(栅栏令牌)。 | 1.4.2、1.4.3、1.4.4。 | 库存和支付的完整项目复盘。 |
| 1.4.7 | 07-延迟队列限流与项目案例.md | ZSet(有序集合)延迟任务、限流、统计、容量、降级和项目话术。 | 1.4.1、1.4.5、1.4.6。 | 通用排障树和跨章综合题。 |
| 1.4.8 | 08-线上排障与综合题库.md | 证据链、止血、复盘,以及 10.1 至 10.25 和新增跨章节长答案。 | 1.4.1 至 1.4.7。 | 复制前序教材正文。 |
推荐顺序是 01、02、03、04、05、06、07、08。若只准备项目面试,至少先完成 01、02、04,再读 05、06、07、08;跳过复制和部署边界会导致缓存一致性与分布式锁答案只剩理想路径。
4. 旧主文档迁移基线
4.1 计数口径
| 基线对象 | 数量 | 构成 | 迁移规则 |
|---|---|---|---|
回答思路字段 | 86 | 22 个知识小节各 3 道,共 66 道;10.6 至 10.25 共 20 道。 | 每组只登记一个目标正文,全部改写为针对性答案。 |
| 章节级热门题区 | 22 | 3.1 至 9.3 的 22 个知识小节。 | 归入 01 至 08 的唯一知识主题。 |
| 模块综合题 | 25 | 10.1 至 10.25;其中 10.1 至 10.5 没有 回答思路字段。 | 全部归入 08,链接前序机制详情。 |
| 旧 Mermaid(图表语法)图 | 10 | 旧图只作为图意参考。 | 新分册重画并真实渲染,不直接计为合格资产。 |
旧 口述答案字段 | 0 | 旧主文档未形成长口述答案。 | 08 从零建立综合长答案与追问树。 |
基线只回答“旧内容有没有唯一去向”,不代表新教材的题量上限。新增题必须使用新编号并注明“新增”,不得伪装成旧题迁移。
4.2 86 组旧题逐项迁移登记
状态统一为“待迁移”;目标文件完成、单文件审计通过且详细答案可追溯后,才改为“已迁移”。Q001 至 Q066 是章节题,Q067 至 Q086 是 10.6 至 10.25 的综合补强题。
| 迁移号 | 旧题编号或首句 | 唯一目标文件 | 目标知识小节 | 状态 |
|---|---|---|---|---|
| Q001 | 3.1 基础:Redis(远程字典服务)为什么快解决什么问题 | 02 | 请求生命周期与性能来源 | 待迁移 |
| Q002 | 3.1 原理:Redis(远程字典服务)为什么快如何工作 | 02 | 事件循环、串行执行与延迟 | 待迁移 |
| Q003 | 3.1 项目:高性能机制如何设计兜底 | 02 | 阻塞边界与容量验证 | 待迁移 |
| Q004 | 3.2 基础:常用数据类型和底层结构解决什么问题 | 01 | 数据类型与对象编码 | 待迁移 |
| Q005 | 3.2 原理:常用数据类型底层如何工作 | 01 | SDS(简单动态字符串)、字典与组合结构 | 待迁移 |
| Q006 | 3.2 项目:数据结构使用不当如何兜底 | 01 | 选型、复杂度与容量 | 待迁移 |
| Q007 | 3.3 基础:单线程模型与 I/O(输入输出)多路复用解决什么问题 | 02 | 单线程边界 | 待迁移 |
| Q008 | 3.3 原理:事件循环底层如何工作 | 02 | 文件事件、时间事件与网络线程 | 待迁移 |
| Q009 | 3.3 项目:网络抖动和慢命令如何兜底 | 02 | 队头阻塞与尾延迟 | 待迁移 |
| Q010 | 4.1 基础:过期删除解决什么问题 | 05 | 过期字典与删除策略 | 待迁移 |
| Q011 | 4.1 原理:过期删除底层如何工作 | 05 | 惰性删除、定期删除与淘汰 | 待迁移 |
| Q012 | 4.1 项目:过期集中触发如何兜底 | 05 | 雪崩、抖动与容量保护 | 待迁移 |
| Q013 | 4.2 基础:RDB(快照持久化)解决什么问题 | 03 | 快照语义与恢复目标 | 待迁移 |
| Q014 | 4.2 原理:RDB(快照持久化)底层如何工作 | 03 | 派生进程、COW(写时复制)与文件替换 | 待迁移 |
| Q015 | 4.2 项目:快照期间资源压力如何兜底 | 03 | 内存峰值与恢复演练 | 待迁移 |
| Q016 | 4.3 基础:AOF(追加日志)解决什么问题 | 03 | 写后日志与持久化策略 | 待迁移 |
| Q017 | 4.3 原理:AOF(追加日志)底层如何工作 | 03 | 缓冲、刷盘和重写 | 待迁移 |
| Q018 | 4.3 项目:日志膨胀或刷盘抖动如何兜底 | 03 | 重写窗口与恢复验证 | 待迁移 |
| Q019 | 4.4 基础:主从复制解决什么问题 | 03 | 复制目标与异步边界 | 待迁移 |
| Q020 | 4.4 原理:主从复制底层如何工作 | 03 | 全量同步、部分重同步与偏移量 | 待迁移 |
| Q021 | 4.4 项目:复制中断和积压不足如何兜底 | 03 | 重连、积压区与容量 | 待迁移 |
| Q022 | 5.1 基础:哨兵架构解决什么问题 | 04 | 监控、通知和故障转移 | 待迁移 |
| Q023 | 5.1 原理:哨兵架构底层如何工作 | 04 | 主观下线、客观下线与选主 | 待迁移 |
| Q024 | 5.1 项目:误判和切换期间如何兜底 | 04 | 仲裁、客户端刷新与数据窗口 | 待迁移 |
| Q025 | 5.2 基础:集群架构解决什么问题 | 04 | 分片与可用性边界 | 待迁移 |
| Q026 | 5.2 原理:集群路由底层如何工作 | 04 | 哈希槽、重定向与迁移 | 待迁移 |
| Q027 | 5.2 项目:扩缩容和多键操作如何兜底 | 04 | 槽迁移、哈希标签与热点 | 待迁移 |
| Q028 | 5.3 基础:缓存问题治理解决什么问题 | 05 | 穿透、击穿与雪崩边界 | 待迁移 |
| Q029 | 5.3 原理:缓存异常底层如何形成 | 05 | 失效窗口、回源和并发放大 | 待迁移 |
| Q030 | 5.3 项目:缓存故障如何降级和恢复 | 05 | 限流、隔离、预热与回填 | 待迁移 |
| Q031 | 6.1 基础:主从、哨兵、集群如何选 | 04 | 部署形态对比 | 待迁移 |
| Q032 | 6.1 原理:三种形态如何工作 | 04 | 复制、选主、分片与故障窗口 | 待迁移 |
| Q033 | 6.1 项目:拓扑故障如何设计兜底 | 04 | RTO(恢复时间目标)与 RPO(恢复点目标) | 待迁移 |
| Q034 | 6.2 基础:Redis(远程字典服务)锁方案如何选 | 06 | 锁能力与安全属性 | 待迁移 |
| Q035 | 6.2 原理:不同锁方案底层如何工作 | 06 | 租约、所有权、续期和多数派 | 待迁移 |
| Q036 | 6.2 项目:锁故障如何由业务幂等兜底 | 06 | Fencing Token(栅栏令牌)与数据库约束 | 待迁移 |
| Q037 | 7.1 基础:SET NX PX(不存在才设置并带毫秒过期时间)锁解决什么问题 | 06 | 原子加锁与租约 | 待迁移 |
| Q038 | 7.1 原理:原子锁如何加锁和解锁 | 06 | 唯一值、Lua(脚本语言)与误删边界 | 待迁移 |
| Q039 | 7.1 项目:锁过期和客户端宕机如何兜底 | 06 | 期限估算、超时和幂等 | 待迁移 |
| Q040 | 7.2 基础:Redisson(Redis 客户端)看门狗解决什么问题 | 06 | 自动续期适用边界 | 待迁移 |
| Q041 | 7.2 原理:看门狗如何调度续期 | 06 | 锁结构、续期任务与重入 | 待迁移 |
| Q042 | 7.2 项目:暂停和续期失败如何兜底 | 06 | 租约失效与旧持有者隔离 | 待迁移 |
| Q043 | 7.3 基础:主从切换为什么可能丢锁 | 06 | 异步复制安全窗口 | 待迁移 |
| Q044 | 7.3 原理:锁丢失时间线如何形成 | 06 | 写入、未复制、主节点故障和提升 | 待迁移 |
| Q045 | 7.3 项目:双持有者如何避免破坏资源 | 06 | 栅栏、版本检查和最终兜底 | 待迁移 |
| Q046 | 7.4 基础:ZSet(有序集合)延迟队列解决什么问题 | 07 | 到期排序与轮询 | 待迁移 |
| Q047 | 7.4 原理:延迟任务领取如何工作 | 07 | 分值、原子领取与并发消费 | 待迁移 |
| Q048 | 7.4 项目:任务不丢不重如何兜底 | 07 | 幂等、重试、死信和补偿 | 待迁移 |
| Q049 | 8.1 基础:慢查询如何识别 | 08 | 延迟现象与证据入口 | 待迁移 |
| Q050 | 8.1 原理:慢命令如何阻塞后续请求 | 08 | 排队、执行时间与网络写回 | 待迁移 |
| Q051 | 8.1 项目:线上慢查询如何止血和复盘 | 08 | 采证、隔离、修复与回归 | 待迁移 |
| Q052 | 8.2 基础:穿透、击穿、雪崩如何区分 | 05 | 三类缓存故障定义 | 待迁移 |
| Q053 | 8.2 原理:三类故障如何放大回源 | 05 | 请求分布、失效时刻与数据库压力 | 待迁移 |
| Q054 | 8.2 项目:缓存大面积失效如何兜底 | 05 | 互斥回填、随机过期、限流与降级 | 待迁移 |
| Q055 | 8.3 基础:分布式锁排查先看什么 | 08 | 锁故障症状与证据 | 待迁移 |
| Q056 | 8.3 原理:锁超时、误删和双持有如何定位 | 08 | 时间线、所有权与切换证据 | 待迁移 |
| Q057 | 8.3 项目:锁事故如何恢复和复盘 | 08 | 止血、数据修复与防复发 | 待迁移 |
| Q058 | 9.1 基础:库存防超卖话术如何组织 | 07 | 库存并发控制主线 | 待迁移 |
| Q059 | 9.1 原理:库存扣减和兜底如何工作 | 07 | 原子预扣、数据库版本和补偿 | 待迁移 |
| Q060 | 9.1 项目:服务重启时库存如何不乱 | 07 | 幂等流水、重试与对账 | 待迁移 |
| Q061 | 9.2 基础:支付回调幂等话术如何组织 | 07 | 回调重复与状态机 | 待迁移 |
| Q062 | 9.2 原理:回调去重和状态推进如何工作 | 07 | 业务唯一键、事务和消息补偿 | 待迁移 |
| Q063 | 9.2 项目:渠道超时和乱序如何兜底 | 07 | 验签、查询、重放保护与对账 | 待迁移 |
| Q064 | 9.3 基础:ZSet(有序集合)延迟队列话术如何组织 | 07 | 延迟任务项目表达 | 待迁移 |
| Q065 | 9.3 原理:任务调度和状态推进如何工作 | 07 | 到期扫描、领取、执行和确认 | 待迁移 |
| Q066 | 9.3 项目:重启、超时和重复执行如何兜底 | 07 | 幂等、补偿和告警 | 待迁移 |
| Q067 | 10.6 Redis(远程字典服务)为什么单线程还能高性能 | 08 | 性能主线综合题 | 待迁移 |
| Q068 | 10.7 SDS(简单动态字符串)相比 C(编程语言)字符串有什么优势 | 08 | 数据结构综合题 | 待迁移 |
| Q069 | 10.8 字典如何渐进式 rehash(重新哈希) | 08 | 数据结构综合题 | 待迁移 |
| Q070 | 10.9 跳表为什么适合 ZSet(有序集合) | 08 | 数据结构综合题 | 待迁移 |
| Q071 | 10.10 RDB(快照持久化)和 AOF(追加日志)怎么取舍 | 08 | 持久化综合题 | 待迁移 |
| Q072 | 10.11 AOF(追加日志)重写会不会阻塞主线程 | 08 | 持久化综合题 | 待迁移 |
| Q073 | 10.12 主从复制为什么可能丢锁 | 08 | 复制与锁综合题 | 待迁移 |
| Q074 | 10.13 哨兵主观下线和客观下线有什么区别 | 08 | 哨兵综合题 | 待迁移 |
| Q075 | 10.14 Redis Cluster(Redis 集群)的 MOVED(迁移中标记)和 ASK(临时重定向)有什么区别 | 08 | 集群综合题 | 待迁移 |
| Q076 | 10.15 缓存穿透、击穿、雪崩分别怎么治理 | 08 | 缓存治理综合题 | 待迁移 |
| Q077 | 10.16 Cache Aside(旁路缓存)如何保证最终一致性 | 08 | 一致性综合题 | 待迁移 |
| Q078 | 10.17 延迟双删有什么问题 | 08 | 一致性综合题 | 待迁移 |
| Q079 | 10.18 Redis(远程字典服务)事务为什么不支持回滚 | 08 | 命令语义综合题 | 待迁移 |
| Q080 | 10.19 Pipeline(管道)和事务有什么区别 | 08 | 批处理语义综合题 | 待迁移 |
| Q081 | 10.20 Stream(流)和 ZSet(有序集合)延迟队列怎么选 | 08 | 消息与调度综合题 | 待迁移 |
| Q082 | 10.21 Redisson(Redis 客户端)看门狗如何续期 | 08 | 锁续期综合题 | 待迁移 |
| Q083 | 10.22 RedLock(红锁)的安全假设是什么 | 08 | 多节点锁综合题 | 待迁移 |
| Q084 | 10.23 big key(大键)如何排查和拆分 | 08 | 容量排障综合题 | 待迁移 |
| Q085 | 10.24 hot key(热键)如何治理 | 08 | 热点排障综合题 | 待迁移 |
| Q086 | 10.25 Redis(远程字典服务)锁如何与 MySQL(关系型数据库)幂等兜底 | 08 | 锁与业务一致性综合题 | 待迁移 |
4.3 10.1 至 10.25 综合题独立登记
综合题正文全部只在 08 维护;01 至 07 提供机制详情。10.1 至 10.5 虽不在 86 组“回答思路”基线中,仍是必须迁移的旧题。
| 综合号 | 旧题主题 | 唯一正文 | 主要详情分册 | 对应迁移号 | 状态 |
|---|---|---|---|---|---|
| 10.1 | Redis(远程字典服务)为什么单线程还快 | 08 | 02 | 不计入 86 | 待迁移 |
| 10.2 | 分布式锁为什么要设置过期时间 | 08 | 06 | 不计入 86 | 待迁移 |
| 10.3 | 为什么解锁要用 Lua(脚本语言) | 08 | 06 | 不计入 86 | 待迁移 |
| 10.4 | RedLock(红锁)安全吗 | 08 | 06 | 不计入 86 | 待迁移 |
| 10.5 | Redis Cluster(Redis 集群)多 key(键)操作有什么限制 | 08 | 04 | 不计入 86 | 待迁移 |
| 10.6 | Redis(远程字典服务)为什么单线程还能高性能 | 08 | 02 | Q067 | 待迁移 |
| 10.7 | SDS(简单动态字符串)相比 C(编程语言)字符串有什么优势 | 08 | 01 | Q068 | 待迁移 |
| 10.8 | 字典如何渐进式 rehash(重新哈希) | 08 | 01 | Q069 | 待迁移 |
| 10.9 | 跳表为什么适合 ZSet(有序集合) | 08 | 01 | Q070 | 待迁移 |
| 10.10 | RDB(快照持久化)和 AOF(追加日志)怎么取舍 | 08 | 03 | Q071 | 待迁移 |
| 10.11 | AOF(追加日志)重写会不会阻塞主线程 | 08 | 03 | Q072 | 待迁移 |
| 10.12 | 主从复制为什么可能丢锁 | 08 | 03、06 | Q073 | 待迁移 |
| 10.13 | 哨兵主观下线和客观下线有什么区别 | 08 | 04 | Q074 | 待迁移 |
| 10.14 | MOVED(迁移中标记)和 ASK(临时重定向)有什么区别 | 08 | 04 | Q075 | 待迁移 |
| 10.15 | 缓存穿透、击穿、雪崩分别怎么治理 | 08 | 05 | Q076 | 待迁移 |
| 10.16 | Cache Aside(旁路缓存)如何保证最终一致性 | 08 | 05 | Q077 | 待迁移 |
| 10.17 | 延迟双删有什么问题 | 08 | 05 | Q078 | 待迁移 |
| 10.18 | Redis(远程字典服务)事务为什么不支持回滚 | 08 | 01 | Q079 | 待迁移 |
| 10.19 | Pipeline(管道)和事务有什么区别 | 08 | 01 | Q080 | 待迁移 |
| 10.20 | Stream(流)和 ZSet(有序集合)延迟队列怎么选 | 08 | 01、07 | Q081 | 待迁移 |
| 10.21 | Redisson(Redis 客户端)看门狗如何续期 | 08 | 06 | Q082 | 待迁移 |
| 10.22 | RedLock(红锁)的安全假设是什么 | 08 | 06 | Q083 | 待迁移 |
| 10.23 | big key(大键)如何排查和拆分 | 08 | 05、08 | Q084 | 待迁移 |
| 10.24 | hot key(热键)如何治理 | 08 | 05、08 | Q085 | 待迁移 |
| 10.25 | Redis(远程字典服务)锁如何与 MySQL(关系型数据库)幂等兜底 | 08 | 06、07 | Q086 | 待迁移 |
协议语义要单独记住:MOVED(迁移中标记)响应表示该槽当前已经由目标节点负责,客户端应更新槽缓存;ASK(临时重定向)响应表示槽迁移尚未完成,客户端只对当前请求临时访问目标节点,不能据此永久改写槽所有权。
5. Redis(远程字典服务)6、7、8 版本表述边界
教材以“生产常见机制主线 + 版本差异侧栏”组织,不把最新能力倒推成旧版本行为,也不把计划编写日看到的版本号写成永久事实。
| 版本层 | 教材定位 | 可以稳定表达的范围 | 必须带条件表达的主题 |
|---|---|---|---|
| Redis(远程字典服务)6.2 | 传统生产基线 | 内存数据结构、串行命令执行、主从、哨兵、集群和常见缓存模式。 | 多线程网络 I/O(输入输出)的启用配置与边界、ACL(访问控制列表)、RESP3(Redis 序列化协议第三版)和客户端缓存均按实际配置验证。 |
| Redis(远程字典服务)7.x | 现代核心主线 | 生产常见的数据、复制、高可用和缓存机制继续作为主线。 | 多部分 AOF(追加日志)、函数、命令和配置变化要注明 7.0、7.2、7.4 等实际小版本,不能只写“7.x 都如此”。 |
| Redis(远程字典服务)8.x | 新能力与兼容差异层 | 作为版本差异和延伸阅读,不取代基础机制。 | 新数据能力、统一发行形态、性能变化和后续小版本特性必须按官方文档与实际部署核对,不能倒推为 6.2 或 7.x 行为。 |
| 当前稳定系列 | 动态事实 | 只记录核对日期和官方来源。 | 新对话继续时重新核对;使用“截至核对日期的稳定系列”而不是“永久最新版本”。 |
统一表达模板:
- 先说适用版本与部署形态,例如“以下以 Redis(远程字典服务)7.x 的单主复制为讨论边界”。
- 再说默认值是否受配置、小版本、操作系统和客户端影响。
- 对当前版本、弃用项和新增能力,只引用 Redis(远程字典服务)官方发布说明、命令文档和配置样例;Redisson(Redis 客户端)行为再核对其官方文档或源码。
- 无法当场核实的动态事实写成待核对项,不用“始终”“一定”“完全不会”等绝对句式。
6. 必画图与资产归属
| 图形主题 | 唯一归属 | 图形形式 | 必须表达的结论 |
|---|---|---|---|
| 对象编码与命令语义 | 01 | Mermaid(图表语法)流程图 | 逻辑类型、对象编码、升级条件和复杂度。 |
| 渐进式 rehash(重新哈希) | 01 | Mermaid(图表语法)状态图 | 双表、迁移索引、读写路径和完成条件。 |
| 请求生命周期与事件循环 | 02 | Mermaid(图表语法)时序图 | 读取、解析、执行、传播、缓冲和写回。 |
| 队头阻塞与尾延迟 | 02 | Mermaid(图表语法)时序图 | 一个慢命令如何放大后续请求延迟。 |
| RDB(快照持久化)与 COW(写时复制) | 03 | Mermaid(图表语法)流程图 | 派生进程、页复制、内存峰值和文件替换。 |
| AOF(追加日志)写入与重写 | 03 | Mermaid(图表语法)流程图 | 缓冲、刷盘、重写增量和恢复顺序。 |
| 部分重同步 | 03 | Mermaid(图表语法)时序图 | 复制标识、偏移量、积压区命中与全量退化。 |
| 哨兵选主 | 04 | Mermaid(图表语法)时序图 | 主观下线、客观下线、领导者选举和从节点提升。 |
| 哈希槽路由与迁移 | 04 | PlantUML(开源建模工具)图及 PNG(便携式网络图形) | 槽所有权、迁移中状态、永久重定向与临时重定向。 |
| Cache Aside(旁路缓存)并发窗口 | 05 | Mermaid(图表语法)时序图 | 读写交错如何产生旧值回填,以及如何补偿。 |
| 穿透、击穿、雪崩 | 05 | Mermaid(图表语法)对比图 | 触发条件、放大路径、治理措施和失败边界。 |
| 锁租约与原子解锁 | 06 | Mermaid(图表语法)时序图 | 所有权、过期、Lua(脚本语言)比较删除和误删边界。 |
| Redisson(Redis 客户端)看门狗 | 06 | Mermaid(图表语法)流程图 | 续期调度、暂停、失败和释放。 |
| Fencing Token(栅栏令牌) | 06 | Mermaid(图表语法)时序图 | 旧持有者恢复后为何仍不能写入受保护资源。 |
| RedLock(红锁)假设与失败窗口 | 06 | PlantUML(开源建模工具)图及 PNG(便携式网络图形) | 多数派、耗时扣减、时钟和网络假设。 |
| ZSet(有序集合)延迟任务 | 07 | Mermaid(图表语法)时序图 | 到期扫描、原子领取、幂等执行、重试和死信。 |
| 项目数据链 | 07 | Mermaid(图表语法)架构图 | WMS(仓储管理系统)、支付、跨境物流和异步任务的上下游边界。 |
| 排障决策树 | 08 | Mermaid(图表语法)流程图 | 现象、止血、取证、根因、修复验证和复盘。 |
图的数量不是完成标准。每张图都要回答一个具体问题,正文必须再次陈述图中的精确结论;图片不能是唯一信息源。Mermaid(图表语法)图必须真实渲染,PlantUML(开源建模工具)图必须同时保留源文件和非空 PNG(便携式网络图形)。
7. 完成判定与轻量验收
7.1 分册完成判定
- 01 至 07 达到计划规定的知识小节、六字段章节题、综合长答案、图、表和数据演绎下限;08 达到排障专题和跨章节长答案下限。
- 每个知识小节都含
kb:knowledge知识标记和至少 3 道完整题;每题包含问题、考点、回答思路、详细答案、进阶追问和进阶回答。 - 综合题每题只有一个
口述答案字段,答案能覆盖机制、失败边界、项目落地和验证方式,并链接真实分册。 - 英文技术词每次附中文含义;代码、命令、配置和路径可放在代码格式中,并在相邻正文解释用途。
- 图真实渲染,表格可读,数据演绎含具体键、值、时点、偏移量、槽位、租约或容量数字。
7.2 模块完成判定
整个 1.4 模块只有同时满足以下条件,才能更新成稿看板为“已完成”:
- Q001 至 Q086 全部从“待迁移”变为“已迁移”,且每题只有一个正文归属。
- 10.1 至 10.25 全部进入 08,综合长答案链接到 01 至 07 的真实详情位置。
- 01 至 08 的职责不交叉;重复内容已改为链接,新增题和迁移题能分开统计。
- 第 6 节的必画图全部存在且渲染成功,图中结论与正文一致。
- WMS(仓储管理系统)库存、支付回调、跨境物流、Runner(执行器)调度、异步任务、ZSet(有序集合)延迟队列和 IoT(物联网)报警风暴都有可复述案例。
- 单文件审计和全模块审计均为 0,所有相对链接有效,无占位答案和空白字符错误。
7.3 每篇轻量验收
本轮不做逐篇 TDD(测试驱动开发)和独立评审。每篇完成后只执行四项门禁:
- 人工抽查概念、机制、失败边界、项目落地和数据演绎是否完整。
- 调用
audit_file(单文件审计函数)检查结构、术语、链接、围栏和占位文本。 - 使用 Mermaid(图表语法)CLI(命令行界面)真实渲染全部 Mermaid(图表语法)代码块;需要 PlantUML(开源建模工具)时,同时渲染并检查 PNG(便携式网络图形)非空。
- 执行
git diff --check检查空白字符,不提交或回退用户的其他修改。
本入口的定向审计命令如下,避免按同名“知识图谱与复习路线”误匹配其他模块:
python3 - <<'PY'
from pathlib import Path
from tools.interview_kb_audit import audit_file, load_terminology
root = Path("面试知识整理")
target = root / "12-Redis从基础到精通/00-知识图谱与复习路线.md"
terms = load_terminology(root / "04-英文术语标注规范.md")
issues = audit_file(target, terms)
for issue in issues:
print(f"{issue.path}:{issue.line}: [{issue.code}] {issue.message}")
raise SystemExit(1 if issues else 0)
PY8. 新对话恢复说明
- 先读取
AGENTS.md指定的 OpenSpec(规格驱动框架)文件和面试知识整理/00-项目说明-续接必读.md、03-成稿进度看板.md、04-英文术语标注规范.md、05-查漏补全-精通级补强计划.md、06-审查报告与明日学习路线.md、08-精通级扩展执行看板.md。 - 再读取本入口、旧主文档和
docs/superpowers/plans/2026-07-14-interview-knowledge-base-module-03-redis-plan.md,核对第 4 节的 86 组迁移基线与 25 道综合题基线。 - 从 01 至 08 中选择编号最小的未完成分册;只修改获授权分册及其专属资产,不回写旧主文档,不复制其他分册正文。
- 写作前先读本入口第 3、5、6 节,确认职责、版本和图形归属;写完只做第 7.3 节的轻量验收。
- 分册通过后更新执行看板的对应子项;只有 01 至 08 全部通过并完成第 7.2 节验收,才更新成稿进度看板。
- 若审计失败,从编号最小的未完成分册继续修复;若版本事实不确定,记录核对日期和来源,不用未经验证的绝对结论填补空白。
9. 本入口交付检查
- 已登记 86 组旧题,并给出唯一目标文件、知识小节和迁移状态。
- 已独立登记 10.1 至 10.25 共 25 道综合题。
- 已定义 01 至 08 唯一职责、依赖和三条复习路线。
- 已说明 Redis(远程字典服务)6.2、7.x、8.x 的版本表述边界。
- 已列出必画图、资产归属和正文复述要求。
- 已写明分册完成、模块完成、新对话恢复和轻量验收方式。
- 已提供知识树、数据路径、学习路线和事故定位共 4 张 Mermaid(图表语法)图。
