目录结构
|
|--deps
|
|-- src
-- adlist.c 双链表结构,用于定义list
-- ae.c 用于事件的处理
-- ae_epoll.c 处理epoll事件
-- ae_evport.c 通过event ports实现处理结构
-- ae_kqueue.c 实现消息队列的处理
-- ae_select.c 处理select事件
-- anet.c 网络处理
-- aof.c 实现aof模式
-- asciilogo.h 定义欢迎界面的logo
-- bio.c 在后台通过线程模式实现io处理
-- bitops.c 与setbit,getbit相关的位操作
-- blocked.c 支持类似blpop,wait的阻塞操作
-- cluster.c 与集群创建,通信相关操作
-- config.c 配置文件的解析
-- crc16.c 基于CCITT标准的过滤算法
-- crc64.c
-- db.c c-level数据库api实现
-- debug.c 调试库和日志输出
-- dict.c 字典实现
-- endiancov.c 主机字节序编解码, redis致力于使用little endian来编码
-- fmacros.h 用于Mac下的兼容性处理
-- help.h 辅助于命令的提示信息
-- hyperloglog.c
-- intset.c int集合类型实现
-- lzf_c.c lzf压缩算法
-- lzf_d.c
-- memtest.c 内存测试
-- muti.c 批量命令操作的原子实现
-- networking.c 网络通信实现
-- notify.c
-- object.c 对象存储类型
-- pqsort.c 一种快速排序的实现
-- pubsub.c 用于订阅模式的实现,有点类似于Client广播发送的方式
-- rand.c 随机序列的生产
-- rdb.c rdb数据的load和dump
-- redis.c redis数据库的主程序入口
-- redis-benchmark.c redis基准测试入口
-- redis-check-aof.c aof文件检查入口
-- redis-check-dump.c dump文件检查入口
-- redis-cli.c redis的shell的客户端
-- release.c 版本发布信息
-- replication.c 数据的主从备份
-- rio.c 流式I/O的读写接口
-- scripting.c redis相关协议转换到lua环境下执行
-- sds.c 强大的字符串处理机制
-- sentinel.c redis集群的监护程序
-- setproctitle.c 程序名信息相关
-- sha1.c sha1加密算法
-- slowlog.c 记录最近一段时间的查询等操作
-- sort.c 排序算法及辅助函数
-- syncio.c 同步io的实现
-- t_hash.c hash结构
-- t_list.c list结构
-- t_set.c set结构
-- t_string.c string结构
-- t_zset.c 用两种数据结构存储同一个数据体
-- util.c 辅助函数
-- ziplist.c ziplist结构
-- zipmap.c zipmap结构
-- zmalloc.c 在malloc上进行封装,增加内存开销统计
|
|--tests
|
|--utils
源码阅读顺序
数据结构实现
sds.h,sds.c 动态字符串实现
adlist.h,adlist.c 双端链表实现
dict.h,dict.c 字典的实现
redis.h中的zskiplist结构和zskiplistNode结构,以及t_zset.c中所有以zsl开头的函数,比如zslCreate,zslInsert,zslDeleteNode 跳跃表实现
hyperloglog.c中的hllhdr结构,以及所有以hll开头的函数。 HyperLogLog实现
阅读内存编码数据结构实现
intset.c 整数集合数据结构。
ziplist.c 压缩列表数据结构
阅读数据类型实现
object.c 对象系统实现
t_string.c 字符串键的实现
t_list.c 列表键的实现
t_hash.c 散列键的实现
t_set.c 集合键的实现
t_zset.c中除zsl开头的函数之外的所有函数 有序集合键的实现
hyperloglog.c中所有以pf开头的函数 HyperLogLog 键的实现
阅读数据库实现相关代码
redis.h文件中的redisDb结构,以及 db.c文件 Redis的数据库实现
notify.c Redis的数据库通知功能实现代码
rdb.h和rdb.c Redis的RDB持久化实现代码
aof.c Redis 的 AOF 持久化实现代码
选读
redis.h文件的pubsubPattern结构,以及pubsub.c文件 发布与订阅功能的实现
redis.h文件的multiState结构以及multiCmd结构,multi.c文件 事务功能的实现
sort.c SORT命令的实现
bitops.c GETBIT,SETBIT等二进制位操作命令的实现
阅读客户端和服务器的相关代码
ae.c,以及任意一个 ae_*.c文件(取决于你所使用的多路复用库) Redis 的事件处理器实现
networking.c Redis 的网络连接库,负责发送命令回复和接受命令请求, 同时也负责创建/销毁客户端, 以及通信协议分析等工作
redis.h和redis.c中和单机Redis服务器有关的部分 单机 Redis 服务器的实现
选读
scripting.c Lua 脚本功能的实现
slowlog.c 慢查询功能的实现
monitor.c 监视器功能的实现
阅读多机功能的实现
replication.c 复制功能的实现代码
sentinel.c Redis Sentinel 的实现代码
cluster.c Redis 集群的实现代码
推荐阅读
[如何阅读redis](https://github.com/huangz1990/blog/blob/master/diary/2014/how-to-read-redis-source-code.rst '如何阅读redis')
[redis源码阅读](http://wiki.jikexueyuan.com/project/redis/provide-service.html 'redis源码阅读')
[redis自建命令](https://zhengqm.github.io/code/2015/06/20/Learn-by-hacking-redis-source-code/ 'redis自建命令')
[redis client/server交互流程](http://www.infoq.com/cn/articles/communication-redis-clientserver 'redis client/server交互流程')