Skip to content

从 0 到 1 学习 Redis

一、项目目标

打造一套适合零基础小白入门、同时覆盖底层原理与面试高频考点的 Redis 学习教程。要求内容由浅入深、图文并茂、能动手实操,最终达到「看完会用、用了懂原理、面试能答上」的效果。

二、读者画像

  • 主要受众:从未接触过 Redis、甚至对 NoSQL/缓存概念都比较模糊的初学者。
  • 次要受众:用过 Redis 但停留在 get/set 层面,希望系统化补齐底层原理与工程实践的开发者。
  • 风格要求:能用「冰箱存菜」「图书馆借书」「快递柜取件」这类生活化的比喻讲清楚 IO 多路复用、持久化、主从复制等晦涩概念。

三、环境约定

  • 服务端无需读者自己安装:教程默认环境中已经有可用的 Redis Server(本地 127.0.0.1:6379 或容器化均可),文档不再花篇幅讲安装
  • 聚焦点
    1. Redis 的正确使用姿势(命令、数据结构、客户端、典型场景)。
    2. Redis 的底层实现逻辑(数据结构源码思想、单线程模型、网络模型、持久化、集群等)。

四、章节内容物(每个章节都必须包含以下 4 部分)

每个章节按照统一结构产出,缺一不可:

  1. 学习文档(.md

    • 用「概念 → 生活类比 → 命令/代码示例 → 底层原理 → 小结」五段式组织。
    • 大量使用 ASCII 图 / Mermaid 图 展示数据结构、流程、内存布局,避免纯文字堆砌。
    • 关键命令必须给出 redis-cli 实操记录(输入 + 输出)。
  2. 实战案例(可运行代码)

    • 至少 1 个贴近真实业务的场景,例如:秒杀扣库存、分布式锁、排行榜、签到、附近的人、消息队列等。
    • 给出完整可运行的代码(推荐 Node.js / Python / Java 任选其一并保持全教程统一),附带启动说明。
  3. HTML 演示页面(demo.html

    • 单文件、零依赖(或仅引入 CDN),打开即可在浏览器中可视化演示该章节的核心概念。
    • 例如:用动画展示 SDS 扩容、跳跃表查找路径、LRU 淘汰过程、主从同步过程等。
    • 页面要有交互(按钮、输入框、步进控制),让读者能「点一下看一步」。
  4. 面试题清单

    • 收集大厂真实面经中该章节的高频题目(至少 5 题)。
    • 每题给出:题目 → 考察点 → 标准答案(分点作答)→ 加分项 / 易错点。

五、内容深度与表达要求

  • 从 0 到 1:第一次出现的术语必须解释,不能默认读者知道(比如第一次提到 RESP 协议要先讲它是什么)。
  • 生活化类比优先:晦涩点(持久化、过期策略、内存淘汰、哨兵选举、Cluster 槽位、Gossip 协议等)必须先用生活例子打比方,再讲技术细节。
  • 能动手:所有命令、代码、演示页面读者都能复制即用,不要出现伪代码或「此处省略」。
  • 由浅入深:先讲「怎么用」,再讲「为什么这么设计」,最后引申「源码 / 性能 / 踩坑」。

六、建议的章节大纲(可在执行时微调)

  1. Redis 是什么 & 为什么快(缓存认知、单线程模型、内存 + IO 多路复用)
  2. 五大基础数据类型(String / List / Hash / Set / ZSet)及底层编码
  3. 三大特殊数据类型(Bitmap / HyperLogLog / Geo)
  4. Key 的过期与内存淘汰策略
  5. 持久化:RDB / AOF / 混合持久化
  6. 事务、Pipeline、Lua 脚本
  7. 发布订阅与 Stream 消息队列
  8. 主从复制原理
  9. 哨兵(Sentinel)高可用
  10. Cluster 集群与数据分片
  11. 分布式锁(含 Redlock 争议)
  12. 缓存设计三大问题:穿透 / 击穿 / 雪崩,及一致性方案
  13. 性能优化、监控与排障
  14. 综合实战项目(如:秒杀系统 / 短链服务 / Feed 流)

七、产出格式约束

  • 所有文档放在 learnNote/redis/ 下,按 序号_主题.md 命名(如 01_intro.md)。
  • 每章节配套的演示页面与代码放在同名子目录中,例如:
    learnNote/redis/
    ├── 01_intro.md
    ├── 01_intro/
    │   ├── demo.html
    │   └── code/
    │       └── hello_redis.py
    └── ...
  • 文档中的代码块必须标注语言(```bash```python 等),方便高亮。
  • 面试题统一汇总到每章末尾的「面试高频题」小节,并在 learnNote/redis/interview.md 做总索引。