先看值不值得学:这门课解决什么问题
很多后端开发者在日常工作中用 Redis,往往停留在调用 SET、GET 或者配置个缓存过期的层面。一旦线上出现内存飙升、主从同步延迟或是大 Key 阻塞,就很难排查根底;在跳槽面试时,面对“Hash 表扩容机制”、“跳表为什么能代替平衡树”这类追问,也常因没看过底层实现而卡壳。这门资料正是针对这些痛点设计的,它不教基础语法和安装部署,而是直接切入源码,帮你把平时当作“黑盒”使用的 Redis 拆解成可量化、可追踪的底层逻辑。如果你的目标是摆脱单纯的 API 调用者身份,想去大厂做核心业务或者彻底搞懂高性能缓存架构,那么花时间啃透这套底层机制是很有必要的。
适合什么基础,建议先看哪几块
这套资料不适合零基础转行的人。你需要具备 C 语言的基本阅读能力,至少能看懂指针、结构体和宏定义,同时要有实际使用 Redis 做过缓存开发的业务经验。如果是刚学完编程语法的新手,直接看源码会非常痛苦。建议在开始前,先重点阅读“整体架构”这一节,建立对网络事件循环、数据持久化和多机复制的全局认知。接着,优先看数据结构模块里的字符串和 Hash 表实现。这两部分是 Redis 性能的基石,也是日常面试中被问及频率最高的内容。不要按顺序逐行死磕,带着“为什么 Redis 要自己写一个动态字符串,而不用原生 char”这类具体问题去源码里找答案,吸收效率会高得多。
资料怎么配合练习,学完能独立做什么
这套图文加音频的资料不能只靠“听”或“看”,必须配合本地环境动手验证。建议你在电脑上备好 Redis 的源码工程,用支持代码跳转的编辑器打开。学到关键的数据结构时,自己写一段简单的测试脚本,通过 GDB 打断点观察变量在内存中的真实变化,对比资料里的图解去理解渐进式 Rehash 的过程。学完这套资料后,你不仅能从容应对大厂的后端系统设计面试,还能在实际工作中独立排查由底层数据结构引发的性能瓶颈。更重要的是,当你面对其他中间件或自研基础组件时,能借鉴 Redis 源码里内存友好的设计思路,写出对系统资源更负责的工程代码。
深入源码底层实现,轻松通关Redis面试
课程目录
* 01 课前导读/
* 01 开篇词 阅读Redis源码能给你带来什么.html (2.28 MB)
* 01 开篇词 阅读Redis源码能给你带来什么.mp3 (15.31 MB)
* 02 01 带你快速攻略Redis源码的整体架构.html (2.79 MB)
* 02 01 带你快速攻略Redis源码的整体架构.mp3 (22.55 MB)
* 02 数据结构模块/
* 01 02 键值对中字符串的实现,用char还是结构体.html (1.08 MB)
* 01 02 键值对中字符串的实现,用char还是结构体.mp3 (18.80 MB)
* 02 03 如何实现一个性能优异的Hash表.html (2.49 MB)
* 02 03 如何实现一个性能优异的Hash表.mp3 (24.67 MB)
* 03 04 内存友好的数据结构该如何细化设计.html (2.14 MB)
* 03 04 内存友好的数据结构该如何细化设计.mp3 (20.09 MB)
* 04 05 有序集合为何能同时支持点查询和范围查询.html (1.66 MB)
* 04 05 有序集合为何能同时支持点查询和范围查询.mp3 (19.09 MB)
* 05 06 从ziplist到quicklist,再到listpack的启发.html (3.46 MB)
* 05 06 从ziplist到quicklist,再到listpack的启发.mp3 (28.08 MB)
* 06 07 为什么Stream使用了Radix Tree.html (2.51 MB)
* 06 07 为什么Stream使用了Radix Tree.mp3 (21.74 MB)
* 03 事件驱动框架和执行模型模块/
* 01 08 Redis server启动后会做哪些操作.html (2.17 MB)
* 01 08 Redis server启动后会做哪些操作.mp3 (18.66 MB)
* 02 09 Redis事件驱动框架(上):何时使用select、poll、epoll.html (2.00 MB)
* 02 09 Redis事件驱动框架(上):何时使用select、poll、epoll.mp3 (17.66 MB)
* 03 10 Redis事件驱动框架(中):Redis实现了Reactor模型吗.html (1.66 MB)
* 03 10 Redis事件驱动框架(中):Redis实现了Reactor模型吗.mp3 (18.12 MB)
* 04 11 Redis事件驱动框架(下):Redis有哪些事件.html (1.55 MB)
* 04 11 Redis事件驱动框架(下):Redis有哪些事件.mp3 (25.46 MB)
* 05 12 Redis真的是单线程吗.html (2.10 MB)
* 05 12 Redis真的是单线程吗.mp3 (25.47 MB)
* 06 13 Redis 6.0多IO线程的效率提高了吗.html (2.08 MB)
* 06 13 Redis 6.0多IO线程的效率提高了吗.mp3 (25.93 MB)
* 07 14 从代码实现看分布式锁的原子性保证.html (2.76 MB)
* 07 14 从代码实现看分布式锁的原子性保证.mp3 (21.96 MB)
* 04 缓存模块/
* 01 15 为什么LRU算法原理和代码实现不一样.html (1.25 MB)
* 01 15 为什么LRU算法原理和代码实现不一样.mp3 (23.80 MB)
* 02 16 LFU算法和其他算法相比有优势吗.html (0.58 MB)
* 02 16 LFU算法和其他算法相比有优势吗.mp3 (19.47 MB)
* 03 17 Lazy Free会影响缓存替换吗.html (1.02 MB)
* 03 17 Lazy Free会影响缓存替换吗.mp3 (21.74 MB)
* 05 期中测试/
* 01 期中测试 这些Redis源码知识,你都掌握了吗.html (0.27 MB)
* 01 期中测试 这些Redis源码知识,你都掌握了吗.mp3 (2.90 MB)
* 02 期中测试题答案 这些问题你都答对了吗.html (0.11 MB)
* 02 期中测试题答案 这些问题你都答对了吗.mp3 (4.19 MB)
* 06 可靠性保证模块/
* 01 18 如何生成和解读RDB文件.html (2.99 MB)
* 01 18 如何生成和解读RDB文件.mp3 (22.24 MB)
* 02 19 AOF重写(上):触发时机与重写的影响.html (0.55 MB)
* 02 19 AOF重写(上):触发时机与重写的影响.mp3 (15.37 MB)
* 03 20 AOF重写(下):重写时的新写操作记录在哪里.html (0.83 MB)
* 03 20 AOF重写(下):重写时的新写操作记录在哪里.mp3 (18.76 MB)
* 04 21 主从复制:基于状态机的设计与实现.html (0.85 MB)
* 04 21 主从复制:基于状态机的设计与实现.mp3 (15.27 MB)
* 05 22 哨兵也和Redis实例一样初始化吗.html (0.50 MB)
* 05 22 哨兵也和Redis实例一样初始化吗.mp3 (13.56 MB)
* 06 23 从哨兵Leader选举学习Raft协议实现(上).html (0.72 MB)
* 06 23 从哨兵Leader选举学习Raft协议实现(上).mp3 (17.58 MB)
* 07 24 从哨兵Leader选举学习Raft协议实现(下).html (1.17 MB)
* 07 24 从哨兵Leader选举学习Raft协议实现(下).mp3 (20.45 MB)
* 08 25 PubSub在主从故障切换时是如何发挥作用的.html (0.63 MB)
* 08 25 PubSub在主从故障切换时是如何发挥作用的.mp3 (16.17 MB)
* 07 不定期加餐/
* 01 加餐1 Redis性能测试工具的使用.html (0.67 MB)
* 01 加餐1 Redis性能测试工具的使用.mp3 (13.45 MB)
* 02 加餐2 用户Kaito:我是怎么读Redis源码的.html (0.56 MB)
* 02 加餐2 用户Kaito:我是怎么读Redis源码的.mp3 (13.80 MB)
* 03 加餐3 从Redis到其他键值数据库的学习体会.html (0.38 MB)
* 03 加餐3 从Redis到其他键值数据库的学习体会.mp3 (10.72 MB)
* 04 加餐4 RDB和AOF文件损坏了咋办.html (0.57 MB)
* 04 加餐4 RDB和AOF文件损坏了咋办.mp3 (14.63 MB)
* 05 用户故事 曾轼麟:世上无难事,只怕有心人.html (0.31 MB)
* 05 用户故事 曾轼麟:世上无难事,只怕有心人.mp3 (10.57 MB)
* 08 Redis Cluster模块/
* 01 26 从Ping-Pong消息学习Gossip协议的实现.html (1.03 MB)
* 01 26 从Ping-Pong消息学习Gossip协议的实现.mp3 (17.09 MB)
* 02 27 从MOVED、ASK看集群节点如何处理命令.html (0.68 MB)
* 02 27 从MOVED、ASK看集群节点如何处理命令.mp3 (15.87 MB)
* 03 28 Redis Cluster数据迁移会阻塞吗.html (0.83 MB)
* 03 28 Redis Cluster数据迁移会阻塞吗.mp3 (20.53 MB)
* 09 编程技巧模块/
* 01 29 如何正确实现循环缓冲区.html (1.60 MB)
* 01 29 如何正确实现循环缓冲区.mp3 (22.01 MB)
* 02 30 如何在系统中实现延迟监控.html (0.44 MB)
* 02 30 如何在系统中实现延迟监控.mp3 (13.71 MB)
* 03 31 从Module的实现学习动态扩展功能.html (0.59 MB)
* 03 31 从Module的实现学习动态扩展功能.mp3 (19.60 MB)
* 04 32 如何在一个系统中实现单元测试.html (0.77 MB)
* 04 32 如何在一个系统中实现单元测试.mp3 (17.66 MB)
* 10 问题答疑/
* 01 答疑1 第1~6讲课后思考题答案及常见问题答疑.html (0.24 MB)
* 01 答疑1 第1~6讲课后思考题答案及常见问题答疑.mp3 (13.05 MB)
* 02 答疑2 第7~12讲课后思考题答案及常见问题答疑.html (0.81 MB)
* 02 答疑2 第7~12讲课后思考题答案及常见问题答疑.mp3 (13.87 MB)
* 03 答疑3 第13~18讲课后思考题答案及常见问题答疑.html (0.49 MB)
* 03 答疑3 第13~18讲课后思考题答案及常见问题答疑.mp3 (14.29 MB)
* 04 答疑4 第19~24讲课后思考题答案及常见问题答疑.html (0.27 MB)
* 04 答疑4 第19~24讲课后思考题答案及常见问题答疑.mp3 (14.10 MB)
* 05 答疑5 第25~32讲课后思考题答案及常见问题答疑.html (0.27 MB)
* 05 答疑5 第25~32讲课后思考题答案及常见问题答疑.mp3 (11.96 MB)
* 11 结束语/
* 01 结束语 Redis源码阅读,让我们从新开始.html (0.70 MB)
* 01 结束语 Redis源码阅读,让我们从新开始.mp3 (8.05 MB)
* 02 结课测试 一套习题,测测你的Redis源码知识掌握程度.html (0.25 MB)






