Redis 深度教程 · 起点

把 Redis 当成一个可推导的系统

基于 Redis 7.x / 8.x(截至 2026-06)。概念为主、深度优先,覆盖面试原理、完整体系、AI Agent 基础设施三条线。命令语义来自官方文档,未在本机逐条复跑——涉及具体阈值处都标了版本。

·适合谁

这份教程假设你具备下面三项能力。三项都不满足时,先补再来会读得顺:

前置能力

  • 能用任意语言的 Redis 客户端连上实例,跑过 SET / GET / EXPIRE 这类基本命令
  • 理解关系数据库的索引、事务、主从复制大致在做什么
  • 在业务代码里调用过缓存,知道它在系统里解决什么问题

·不适合谁

如果你是更合适的去处
完全没碰过 Redis先过一遍 redis.io 的 Quick Start,跑通基本命令再回来
只想查某个命令的语法redis.io/commands 是更快的工具,本教程讲机制不讲速查
要给 Redis 内核提 PR / 读 C 源码本教程讲到机制为止;源码级直接读 redis/src(dict.c / t_zset.c / ae.c)

·读完之后你能做到什么

Redis 的几乎所有行为都能从两块基石推导出来——为每种数据形态精选内存编码、单线程串行执行。一旦你能用这两点解释清楚「为什么一个大 key 能拖垮整个实例」「为什么分布式锁在一次 GC 停顿后就不再安全」「为什么 Redlock 至今在学术界有争议」,看 Redis 的眼光就从「背命令」变成了「推系统」。具体到可验证的能力:

读完能做到(可验证)

  • 给定一个存储需求,选对数据类型,并说出它底层用哪种编码、在什么阈值退化成 hashtable / skiplist
  • 在白板上画出缓存穿透 / 击穿 / 雪崩的触发时序,给出各自的机制级解法(布隆过滤器 / 互斥重建 / 逻辑过期 / TTL 加随机)
  • 判断一个分布式锁方案是否安全:指出 SETNX+EXPIRE 的非原子缺陷、Redlock 在时钟漂移 / STW 停顿下的失效路径、Redisson watchdog 续约解决什么
  • 为 LLM / Agent 系统选型 Redis 的角色:何时用原生 Vector Set、何时上专用向量库,语义缓存的 distance_threshold 如何影响命中
  • 读懂 redis.conf 里 maxmemory-policy / appendfsync / save / hash-max-listpack-entries 在调什么

一句话本质

Redis 的两块基石——为每种数据形态精选内存编码、单线程串行执行——几乎能推导出它的全部行为:为什么快、为什么每条命令天然原子(这正是分布式锁 / 限流 / 计数器成立的根基)、为什么大 key 会阻塞整个实例、为什么持久化要 fork。想透这两点,Redis 就从「一堆要背的命令」变成「一个可推导的系统」。面试八股、完整体系、Agent 基础设施这三块,都是同一个模型的推论。

现状速览 · 截至 2026-06

稳定的核心:五大数据类型、单线程模型、RDB / AOF、复制 / 哨兵 / Cluster,自 Redis 5 起高度稳定,是本教程主体。

正在动的边界:2024-03 许可从 BSD 改为源码可见的 RSALv2 / SSPL,催生 Linux 基金会的 Valkey 分叉(基于 7.2.4、仍 BSD,已成多数云厂商默认)。Redis 8.0(2025-05 GA)把 Search / JSON / 向量等模块并入内核、更名「Redis Open Source」、新增原生 Vector Set 类型、并加回 AGPLv3(现为三重许可)。最新稳定版 Redis 8.2.x(2025-10)、Valkey 9.1(2026-05)。

已被取代的旧认知:ziplist 在 7.0 改名 listpack;单个 appendonly.aof 变为多段 AOF(base + incr + manifest);Hash 在 7.4 起支持字段级 TTL;「Redis = BSD 开源」已不再成立。

读之前 · 流畅感是假象

这份教程会刻意在自测和「想一想」处制造停顿。读得越顺,越要警惕——下面三种自我感觉,往往是学习没真正发生的信号:

『我读得很顺』——那是眼熟,不是学会;
『我做题很快』——那是题型见过,不是真懂;
『我没卡壳』——那是没碰到机制本身。

有效的学习带摩擦:每个自测先合上答案自己写,再展开对照。直接点开答案,等于把这一节当成又读了一遍。

·概念地图

整份教程挂在下面这张图上。两块朱红基石在顶部,其余都是从它们推导出来的——读每一章时,回到这张图问一句「这是从哪块基石推出来的」。

内存编码选择 基石一 · 01 单线程串行执行 基石二 · 02 数据形态 → 最优编码 快 · 省内存 命令天然原子 无锁 · 串行 fork → 持久化 RDB / AOF · 03 缓存工程 三兄弟 · 一致性 · 04 分布式锁 · 限流 · 计数器 复制 · 哨兵 · Cluster · 05 Agent 基础设施 向量 · 语义缓存 · 记忆 · 限流 · 06 向量也是一种编码
图 0两块朱红基石几乎推导出其余全部行为。注意:底部的 Agent 基础设施不是新东西——它是把同一套「编码 + 单线程原子性」用到了向量与 LLM 限流上,所以它的箭头来自基石而非另起炉灶。

·三条学习路径

这是一份概念教程,没有逐行代码实操章。按你的目的挑一条线走:

你的目的建议路径
把面试八股讲到原理层01 → 02 → 04 → 05,自测重点做「原理层 / 应用判别层」
系统建立 Redis 心智模型按 01 → 02 → 03 → 04 → 05 顺序读,06 选读
转 AI Agent 全栈、想知道 Redis 在 Agent 里的位置先读 01 的数据类型 + 02 的原子性,直接跳 06,再回头补 04 / 05

·目录

·学完之后

下一步主题

  • Redis 源码:dict.c / t_zset.c / ae.c——把本教程的「机制」落到 C 实现
  • Valkey 的多线程 IO:读它把命令执行之外的工作搬出主线程的设计,对照 Redis 8 的取舍
  • RediSearch / Vector Set 深入:HNSW 的 EF / M 参数、int8 / 二值量化对召回的影响
  • 分布式共识:ZooKeeper / etcd 的 Raft——理解为什么要正确性时它们比 Redis 锁更合适
  • 多级缓存体系:Caffeine + Redis 两级、一致性哈希、缓存预热