主题
从 0 到 1 学习 Redis
一、项目目标
打造一套适合零基础小白入门、同时覆盖底层原理与面试高频考点的 Redis 学习教程。要求内容由浅入深、图文并茂、能动手实操,最终达到「看完会用、用了懂原理、面试能答上」的效果。
二、读者画像
- 主要受众:从未接触过 Redis、甚至对 NoSQL/缓存概念都比较模糊的初学者。
- 次要受众:用过 Redis 但停留在
get/set层面,希望系统化补齐底层原理与工程实践的开发者。 - 风格要求:能用「冰箱存菜」「图书馆借书」「快递柜取件」这类生活化的比喻讲清楚 IO 多路复用、持久化、主从复制等晦涩概念。
三、环境约定
- 服务端无需读者自己安装:教程默认环境中已经有可用的 Redis Server(本地
127.0.0.1:6379或容器化均可),文档不再花篇幅讲安装。 - 聚焦点:
- Redis 的正确使用姿势(命令、数据结构、客户端、典型场景)。
- Redis 的底层实现逻辑(数据结构源码思想、单线程模型、网络模型、持久化、集群等)。
四、章节内容物(每个章节都必须包含以下 4 部分)
每个章节按照统一结构产出,缺一不可:
学习文档(
.md)- 用「概念 → 生活类比 → 命令/代码示例 → 底层原理 → 小结」五段式组织。
- 大量使用 ASCII 图 / Mermaid 图 展示数据结构、流程、内存布局,避免纯文字堆砌。
- 关键命令必须给出
redis-cli实操记录(输入 + 输出)。
实战案例(可运行代码)
- 至少 1 个贴近真实业务的场景,例如:秒杀扣库存、分布式锁、排行榜、签到、附近的人、消息队列等。
- 给出完整可运行的代码(推荐 Node.js / Python / Java 任选其一并保持全教程统一),附带启动说明。
HTML 演示页面(
demo.html)- 单文件、零依赖(或仅引入 CDN),打开即可在浏览器中可视化演示该章节的核心概念。
- 例如:用动画展示 SDS 扩容、跳跃表查找路径、LRU 淘汰过程、主从同步过程等。
- 页面要有交互(按钮、输入框、步进控制),让读者能「点一下看一步」。
面试题清单
- 收集大厂真实面经中该章节的高频题目(至少 5 题)。
- 每题给出:题目 → 考察点 → 标准答案(分点作答)→ 加分项 / 易错点。
五、内容深度与表达要求
- 从 0 到 1:第一次出现的术语必须解释,不能默认读者知道(比如第一次提到 RESP 协议要先讲它是什么)。
- 生活化类比优先:晦涩点(持久化、过期策略、内存淘汰、哨兵选举、Cluster 槽位、Gossip 协议等)必须先用生活例子打比方,再讲技术细节。
- 能动手:所有命令、代码、演示页面读者都能复制即用,不要出现伪代码或「此处省略」。
- 由浅入深:先讲「怎么用」,再讲「为什么这么设计」,最后引申「源码 / 性能 / 踩坑」。
六、建议的章节大纲(可在执行时微调)
- Redis 是什么 & 为什么快(缓存认知、单线程模型、内存 + IO 多路复用)
- 五大基础数据类型(String / List / Hash / Set / ZSet)及底层编码
- 三大特殊数据类型(Bitmap / HyperLogLog / Geo)
- Key 的过期与内存淘汰策略
- 持久化:RDB / AOF / 混合持久化
- 事务、Pipeline、Lua 脚本
- 发布订阅与 Stream 消息队列
- 主从复制原理
- 哨兵(Sentinel)高可用
- Cluster 集群与数据分片
- 分布式锁(含 Redlock 争议)
- 缓存设计三大问题:穿透 / 击穿 / 雪崩,及一致性方案
- 性能优化、监控与排障
- 综合实战项目(如:秒杀系统 / 短链服务 / 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做总索引。