天天看点

带有详细注释的 Redis 3.0 代码 (github.com)



Redis 3.0 源码注释

这份注释是我在创作新版《Redis 设计与实现》期间, 为了了解 Redis 的内部实现而制作的, 所有在书中有介绍的内容, 在源码中都进行了相应的注释。

在注释的过程中, 除了少量空格和空行方面的调整外, 没有对原始代码进行任何其他改动, 最大程度地保证了代码的“原汁原味”。

希望这份注释源码能给大家学习和了解 Redis 带来一点帮助。

Have fun!

黄健宏(huangz)

2014 年 6 月 28 日

<a></a>

文件

作用

<code>adlist.c</code> 、 <code>adlist.h</code>

双端链表数据结构的实现。

<code>ae.c</code> 、 <code>ae.h</code> 、 <code>ae_epoll.c</code> 、 <code>ae_evport.c</code> 、

<code>ae_kqueue.c</code> 、 <code>ae_select.c</code>

事件处理器,以及各个具体实现。

<code>anet.c</code> 、 <code>anet.h</code>

Redis 的异步网络框架,内容主要为对 socket 库的包装。

<code>aof.c</code>

AOF 功能的实现。

<code>asciilogo.h</code>

保存了 Redis 的 ASCII LOGO 。

<code>bio.c</code> 、 <code>bio.h</code>

Redis 的后台 I/O 程序,用于将 I/O 操作放到子线程里面执行, 减少 I/O 操作对主线程的阻塞。

<code>bitops.c</code>

二进制位操作命令的实现文件。

<code>blocked.c</code>

用于实现 BLPOP 命令和 WAIT 命令的阻塞效果。

<code>cluster.c</code> 、 <code>cluster.h</code>

Redis 的集群实现。

<code>config.c</code> 、 <code>config.h</code>

Redis 的配置管理实现,负责读取并分析配置文件, 然后根据这些配置修改 Redis 服务器的各个选项。

<code>crc16.c</code> 、 <code>crc64.c</code> 、 <code>crc64.h</code>

计算 CRC 校验和。

<code>db.c</code>

数据库实现。

<code>debug.c</code>

调试实现。

<code>dict.c</code> 、 <code>dict.h</code>

字典数据结构的实现。

<code>endianconv.c</code> 、 <code>endianconv.h</code>

二进制的大端、小端转换函数。

<code>fmacros.h</code>

一些移植性方面的宏。

<code>help.h</code>

<code>utils/generate-command-help.rb</code> 程序自动生成的命令帮助信息。

<code>hyperloglog.c</code>

HyperLogLog 数据结构的实现。

<code>intset.c</code> 、 <code>intset.h</code>

整数集合数据结构的实现,用于优化 SET 类型。

<code>lzf_c.c</code> 、 <code>lzf_d.c</code> 、 <code>lzf.h</code> 、 <code>lzfP.h</code>

Redis 对字符串和 RDB 文件进行压缩时使用的 LZF 压缩算法的实现。

<code>Makefile</code> 、 <code>Makefile.dep</code>

构建文件。

<code>memtest.c</code>

内存测试。

<code>mkreleasehdr.sh</code>

用于生成释出信息的脚本。

<code>multi.c</code>

Redis 的事务实现。

<code>networking.c</code>

Redis 的客户端网络操作库, 用于实现命令请求接收、发送命令回复等工作, 文件中的函数大多为 write 、 read 、 close 等函数的包装, 以及各种协议的分析和构建函数。

<code>notify.c</code>

Redis 的数据库通知实现。

<code>object.c</code>

Redis 的对象系统实现。

<code>pqsort.c</code> 、 <code>pqsort.h</code>

快速排序(QuickSort)算法的实现。

<code>pubsub.c</code>

发布与订阅功能的实现。

<code>rand.c</code> 、 <code>rand.h</code>

伪随机数生成器。

<code>rdb.c</code> 、 <code>rdb.h</code>

RDB 持久化功能的实现。

<code>redisassert.h</code>

Redis 自建的断言系统。

<code>redis-benchmark.c</code>

Redis 的性能测试程序。

<code>redis.c</code>

负责服务器的启动、维护和关闭等事项。

<code>redis-check-aof.c</code> 、 <code>redis-check-dump.c</code>

RDB 文件和 AOF 文件的合法性检查程序。

<code>redis-cli.c</code>

Redis 客户端的实现。

<code>redis.h</code>

Redis 的主要头文件,记录了 Redis 中的大部分数据结构, 包括服务器状态和客户端状态。

<code>redis-trib.rb</code>

Redis 集群的管理程序。

<code>release.c</code> 、 <code>release.h</code>

记录和生成 Redis 的释出版本信息。

<code>replication.c</code>

复制功能的实现。

<code>rio.c</code> 、 <code>rio.h</code>

Redis 对文件 I/O 函数的包装, 在普通 I/O 函数的基础上增加了显式缓存、以及计算校验和等功能。

<code>scripting.c</code>

脚本功能的实现。

<code>sds.c</code> 、 <code>sds.h</code>

SDS 数据结构的实现,SDS 为 Redis 的默认字符串表示。

<code>sentinel.c</code>

Redis Sentinel 的实现。

<code>setproctitle.c</code>

进程环境设置函数。

<code>sha1.c</code> 、 <code>sha1.h</code>

SHA1 校验和计算函数。

<code>slowlog.c</code> 、 <code>slowlog.h</code>

慢查询功能的实现。

<code>solarisfixes.h</code>

针对 Solaris 系统的补丁。

<code>sort.c</code>

SORT 命令的实现。

<code>syncio.c</code>

同步 I/O 操作。

<code>testhelp.h</code>

测试辅助宏。

<code>t_hash.c</code> 、 <code>t_list.c</code> 、 <code>t_set.c</code> 、 <code>t_string.c</code> 、 <code>t_zset.c</code>

定义了 Redis 的各种数据类型,以及这些数据类型的命令。

<code>util.c</code> 、 <code>util.h</code>

各种辅助函数。

<code>valgrind.sup</code>

valgrind 的suppression文件。

<code>version.h</code>

记录了 Redis 的版本号。

<code>ziplist.c</code> 、 <code>ziplist.h</code>

ZIPLIST 数据结构的实现,用于优化 LIST 类型。

<code>zipmap.c</code> 、 <code>zipmap.h</code>

ZIPMAP 数据结构的实现,在 Redis 2.6 以前用与优化 HASH 类型, Redis 2.6 开始已经废弃。

<code>zmalloc.c</code> 、 <code>zmalloc.h</code>

内存管理程序。