获取源代码
有两种方式,第一种是从官网下载 Redis 源码压缩包,如图 1-1 所示。
图1-1
将压缩包解压得到一个文件夹。
第二种方式,通过 git clone 获取源码。
从 Github 上,使用 git clone https://github.com/redis/redis.git指令下载,下载完成后你会得到如下文件。
图 1-2
进入 redis 目录,使用 git checkout 切换到 7.0.5 这个 tag 。
复制
gir checkout tags/7.0.5 -b 7.0.5
- 1.
编译 Redis
在编译之前,需要安装一些环境依赖,Redis 是 C 语言编写的,所以还需要 gcc 编译器。
执行 gcc -v判断是否安装了编译器。
图 1-3
没有安装的话,使用如下指令安装。
复制
xcode-select --install
- 1.
一切准备就绪,进入 redis 的源码目录,执行 make命令就可以了,你可以类比成 Java 中的 mvn 命令。
复制
make CFLAGS="-g -O0" MALLOC=jemalloc
- 1.
命令后边的 “-O0” 参数表示告诉编译器不要优化代码,防止你在 Debug 的时候, IDE 里面的 Redis 源码与实际运行的代码对应不上。
MALLOC=jemalloc ,指定在 Mac OS 系统上 Redis 使用 jemalloc 内存分配器,Linux 默认使用该分配器,如果是 Linux 系统,无需指定该参数。
内存碎片自动清理功能只在 jemalloc 内存分配器生效,所以才加上这个参数指定内存分配器。
如果在 Linux 系统上用于生产环境,那么直接使用指令 make命令即可。
编译成功,将会看到图 1-4 中Hint: It's a good idea to run 'make test' ;),提示我们可以运行单元测试,这一步可以省略。
图 1-4
启动 Redis
编译成功,进入 src 源码目录下,你会看到一个 redis-server 的可执行程序,使用如下指令启动。
复制
./redis-server ../redis.conf
- 1.
图 1-5
代码调试环境搭建
编译好了,我们还差一个方便阅读和调试源码的工具。为了方便阅读和 debug 源码,极力推荐你使用 CLion 来阅读和调试 Redis 源码,我使用的是 CLion 2021.3 版本,它支持 Makefile 的项目。
安装好以后,打开 CLion,点击 open,选择 Redis 源码目录即可。
图 1-6
之后检查下 Run Debug 是否出现这些选项,选择编辑。
图 1-7
选择编辑 redis-server ,指定启动配置文件 redis.conf的目录,保存。
图 1-8
在 server.c 的main() 方法加断点,Debug 启动 redis -server,进行源码 Debug。
图 1-9