【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

源码之前,了无秘密

此前翻译了redis.conf的配置文件,获6篇文,大家也挺喜欢的。
redis.conf翻译与配置(一)
redis.conf翻译与配置(二)
redis.conf翻译与配置(三)
redis.conf翻译与配置(四)
redis.conf翻译与配置(五)
redis.conf翻译与配置(六)

也写了一些redis实操和概念的文,反响还不错,涨了不少粉丝

带上问题来学redis,看到不吃亏(什么是redis?缓存问题、数据一致性、redis配置文件***)
全面分析redis持久化机制
and so on.

之后我打开了redis/src目录,发现了“新大陆”。
我准备学习一下redis的源码,并总结我的学习笔记。

那么学习总该有个路线图,于是经过多方求教,我把那一堆上百个文件做了个初步的划分(随着学习的进度后面会再细分):

学习推进路线

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

受侯捷老师的《STL源码剖析》的带动,我决定先学习redis的内存分配原则,为接下来的数据结构铺平道路。

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

在阅读完和数据结构有关的文件之后, 接下来就应该阅读内存编码(encoding)数据结构了。
不过据说:内存编码数据结构不容易找到相关的资料, 因为这些数据结构都是 Redis 为了节约内存而专门开发出来的, 换句话说, 这些数据结构都是特制(adhoc)的, 除了 Redis 源码中的文档之外, 基本上找不到其他资料来了解这些特制的数据结构。

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

接下来, 为了知道 Redis 是如何通过以上提到的数据结构来实现不同类型的键, 我们需要阅读实现各个数据类型的文件, 以及 Redis 的对象系统文件。

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

在读完了 Redis 使用所有底层数据结构, 以及 Redis 是如何使用这些数据结构来实现不同类型的键之后, 我们就可以开始阅读 Redis 里面和数据操作有关的代码了
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

接下来,在阅读完数据库实现代码, 以及 RDB 和 AOF 两种持久化的代码之后, 我们可以开始阅读客户端和 Redis 服务器本身的实现代码
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

当然,前面阅读过程中还会需要一些配套文件的支持,碧如bio、rio等

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

在弄懂了 Redis 的单机服务器是怎样运作的之后, 就可以开始阅读 Redis 多机功能的实现代码了
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

工具类

还有一些工具类:
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线

以及剩下的一些:
【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线
这些我可能就看看Makefile,还有那几个不知道去哪儿的能不能找到该去的地方。


前期准备工作已毕,之后就开始学习之路了。

如果有需要这套分好的文件的朋友,可以关注私信,毕竟我分这一大堆东西也不容易啊。

【redis6.0.6】redis6.0.6源码,慢慢看,慢慢聊 -- 第一天:学习路线