Redis5.0.8的目录主要由四个部分组成deps、src、tests、utils。另外在根目录下有两个重要的配置文件,一个是redis.conf
这个是Redis启动运行参数相关的配置文件,另一个是sentinel.conf
哨兵功能的配置文件。
deps目录
通过阅读当前目录下的README.md
可以知道deps
目录下是第三方依赖和官方C语言客户端hiredis
。当然,Redis也依赖libc(标准c库),只是这个库是来自系统平台的。
jemalloc
是一个第三方的内存管理器,可以用于替代默认的malloc
, 当然,这是一个可选项,并非强制要求的。
Linenoise
是一个开源的命令行工具,支持历史命令。轻量级别的,如果我们要用的话可以直接包含在代码里面,我没有仔细研究它的接口与实现,后面有机会用到了可以研究一下。
lua
,lua脚本。
src
src目录下有一个modules
目录包含了一个实现Redis module
的示例代码,Redis其余功能模块的代码直接放在了src
下面。
可能以后大部分时间都是在阅读这个目录下的代码。
这里面源码文件名字与功能模块基本能对应上。总体来讲可以分为几个方面:
- 服务器本身相关功能比如服务器启动、配置读取、网络通信,内部是如何组织各种类型的数据的。
- Redis里面各种数据结构的实现
- 持久化,