1 Redis 的简介
Redis 实际上是简称,全称为 Remote Dictionary Server
(远程字典服务器),由 Salvatore Sanfilippo 写的高性能 key-value 存储系统,其完全开源免费,遵守 BSD 协议。Redis 与其他 key-value 缓存产品(如 memcache)有以下几个特点。
- 数据持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 数据结构简单丰富:既有简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
- 高可用:支持主从、哨兵、集群等模式,可以有效提高可用性。
Redis 也是一种 分布式缓存 [[1. 从缓存到分布式缓存]],其代码是 c 语言写的,那我们该如何阅读呢?
2 环境搭建
环境依赖,先看看 gcc 、cc、g++ 有没有安装
whereis gcc
whereis cc
whereis g++
安装gcc
xcode-select --install
brew install gcc
brew install pkg-config
查看 gcc 的版本:
$ gcc --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: x86_64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我使用 CLion 2022.3.1
,这个版本可以支持 Makefile
的项目,我们可以检查一下环境是不是有问题, 如果有问题,这里会有错误信息,我的之前报错是因为 Clion 的版本版本太低了,升级之后就好了。
下载Redis源码:
git clone https://github.com/redis/redis.git
切换到指定的版本
git checkout 7.0
File => New CMake Project from Sources
, 打开源码项目, 会自动生成根目录下的 CMakeList.txt
文件:
Clion 导入项目的时候选择已有的 MakeFile 文件,如果有是否 clean
项目,选择 clean
即可,之后可以点开 MakeFile
文件:
如果需要禁止编译器优化,可以使用下面命令:
make CFLAGS="-g -O0" MALLOC=jemalloc
运行完之后, Src 文件下就会出现可运行文件:
然后可以看到这些可运行的选项,继而配置Edit configuration
运行配置:
选择 debug
进行启动,启动成功,然后可以进行调试了:
可以使用 Redis Desktop Manager
来进行连接:
或者命令行连接(没有密码就可以不需要 -a 12345):
redis-cli -h 127.0.0.1 -p 6379 -a 12345
如果头文件引入报红色下划线,那就试试重新加载一下
3 Redis源码阅读技巧
3.1 Redis 的目录结构
Redis 的目录:
- deps: Redis 所依赖的第三方代码库
- hdr_histogram:用于生成命令的延迟追踪直方图
- hiredis:官方c