从源码角度理解 Redis 系统设计思路
经典 C 语言的开发技巧
掌握计算机系统设计思想
Redis 高频面试题目解析
课程介绍
说实话,平常我们在基于 Redis 做应用开发的时候,可能只是把它作为一个缓存系统或是数据库来存取数据,并不会接触到源码层面的东西。
但实际上,我们在使用或运维 Redis 的时候,经常会面临 Redis 性能变差、Redis 实例故障等会影响到业务应用运行的问题。再者,经历过大厂面试的人也知道,很多互联网公司在招聘资深技术岗时,都会问一些跟 Redis 相关的考点问题。
这些问题怎么解决、怎么回答,其实考验的就是我们对 Redis 底层源码的掌握程度。但是,阅读源码,你可能觉得想想都是一件很难的事情:我是想读 Redis 源码,但是总感觉无从下手,或者是无所适从,结果最后就不了了之了。
其实,你之所以“无从下手”的原因,是缺少了代码结构的全景图;而出现“无所适从”的问题,是缺少阅读目标的牵引和基本原理的支撑。简单来说,就是你没有掌握科学、高效的代码阅读方法。
所以在这门课程中,蒋德钧老师就会分享他实际阅读 Redis 源码总结出来的经验和方法,帮助你先从整体上掌握 Redis 源码的结构,也就是形成一幅 Redis 源码全景图。
课程目录
01丨带你快速攻略Redis源码的整体架构.pdf
02丨键值对中字符串的实现,用char还是结构体?.pdf
03丨如何实现一个性能优异的Hash表?.pdf
04丨内存友好的数据结构该如何细化设计?.pdf
05丨有序集合为何能同时支持点查询和范围查询?.pdf
06丨从ziplist到quicklist,再到listpack的启发.pdf
07丨为什么Stream使用了RadixTree?.pdf
08丨Redisserver启动后会做哪些操作?.pdf
09丨Redis事件驱动框架(上):何时使用select、poll、epoll?.pdf
10丨Redis事件驱动框架(中):Redis实现了Reactor模型吗?.pdf
11丨Redis事件驱动框架(下):Redis有哪些事件?.pdf
12丨Redis真的是单线程吗?.pdf
13丨Redis6.pdf
14丨从代码实现看分布式锁的原子性保证.pdf
15丨为什么LRU算法原理和代码实现不一样?.pdf
16丨LFU算法和其他算法相比有优势吗?.pdf
17丨LazyFree会影响缓存替换吗?.pdf
18丨如何生成和解读RDB文件?.pdf
19丨AOF重写(上):触发时机与重写的影响.pdf
20丨AOF重写(下):重写时的新写操作记录在哪里?.pdf
21丨主从复制:基于状态机的设计与实现.pdf
22丨哨兵也和Redis实例一样初始化吗?.pdf
23丨从哨兵Leader选举学习Raft协议实现(上).pdf
24丨从哨兵Leader选举学习Raft协议实现(下).pdf
25丨Pub-Sub在主从故障切换时是如何发挥作用的?.pdf
26丨从Ping-Pong消息学习Gossip协议的实现.pdf
27丨从MOVED、ASK看集群节点如何处理命令?.pdf
28丨RedisCluster数据迁移会阻塞吗?.pdf
29丨如何正确实现循环缓冲区?.pdf
30丨如何在系统中实现延迟监控?.pdf
31丨从Module的实现学习动态扩展功能.pdf
32丨如何在一个系统中实现单元测试?.pdf
答疑1丨第1~6讲课后思考题答案及常见问题解析.pdf
答疑2丨第7~12讲课后思考题答案及常见问题解析.pdf
答疑3丨第13~18讲课后思考题答案及常见问题答疑.pdf
答疑4丨第19~24讲课后思考题答案及常见问题答疑.pdf
答疑5丨第25~32讲课后思考题答案及常见问题答疑.pdf
加餐1丨Redis性能测试工具的使用.pdf
加餐2丨用户Kaito:我是怎么读Redis源码的?.pdf
加餐3丨从Redis到其他键值数据库的学习体会.pdf
加餐4丨RDB和AOF文件损坏了咋办?.pdf
结束语丨Redis源码阅读,让我们从新开始.pdf
开篇词丨阅读Redis源码能给你带来什么?.pdf
期中测试丨这些Redis源码知识,你都掌握了吗?.pdf
期中测试题答案丨这些问题你都答对了吗?.pdf
用户故事丨曾轼麟:世上无难事,只怕有心人.pdf