主要介绍redis源码的目录结构。
常用数据结构
adlist.h/adlist.c:list定义,双向链表
dict.h/dict.c:字典数据结构 (内存hash表)
intset.h/intset.c:整数范围内的集合set数据结构
sds.h/sds.c:redis字符串
zipmap.h/zipmap.c:zipmap数据结构
ziplist.h/ziplist.c:ziplist数据结构
t_hash.c/t_list.c/t_set.c/t_string.c/t_zset.c:hash、list、set、string、zset在server/client中的应答操作
网络相关
ae.h/ae.c:用于redis的事件处理,包含句柄事件和超时事件
ae_epoll.c:实现基于epoll系统调用的接口
ae_evport.c:
ae_kqueue.c:实现基于kqueue系统调用的接口
ae_select.c:实现基于select系统调用的接口
anet.h/anet.c:封装server/client通信接口,包括anetTcpServer、antTcpConnect、anetTcpAccept、anetRead、anetWrite等方法
networking.c:网络相关。例如client连接server、slave连接master等
客户端服务端相关
redis-cli.c:redis客户端的实现
redis.h/redis.c:redis服务端的实现
replication.c:主从数据库的复制操作
常用工具
debug.c:调试用
fmacros.h:用于mac下的兼容性处理
help.h:命令的提示信息
redis-benchmark.c:redis性能测试
redis-check-aof.c:
redis-check-dump.c:
release.h/release.c:发布信息
sha1.h/sha1.c:有关sha算法的实现
solarifixes.h:solaris系统的兼容性实现
syncio.c:同步socket和文件I/O操作
testhelp.h:小型测试框架
util.h/util.c:通用工具
version.h:redis版本号
zmalloc.h/zmalloc.c:redis关于内存分配的封装实现
pqsort.h/pqsort.c/sort.c:排序算法
数据库相关
aof.c:aof,全称append only file,纪录每次的写操作,服务挂掉后可以用此文件来恢复数据库状态。
config.h/config.c:读取redis.conf配置文件,供server对象使用。在server的main函数中调用config.c中实现的loadServerConfig(char *filename)方法
db.c:redis内存数据库的相关操作接口
lzf.h/lzf_c.c/lzf_d.c/lzfP.h:本地数据库的保存,使用LZF压缩算法
multi.c:事务处理相关操作
object.c:redisObject结构
pubsub.c:订阅模式的实现
rdb.c:redis本地数据库的相关操作,包括保存、移除、查询等