redis-3.0-annotated

by huangz1990

带有详细注释的 Redis 3.0 代码(annotated Redis 3.0 source code)。

6.8K Stars 3.1K Forks Last release: Not found BSD 3-Clause "New" or "Revised" License 3.9K Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Redis 3.0 源码注释

本项目是注释版的 Redis 3.0 源码, 原始代码来自: https://github.com/antirez/redis 。

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

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

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

另外,

新版《Redis 设计与实现》 
_\ 正在各大网店发售中, 希望大家可以多多支持这本书。

Have fun!

| 黄健宏(huangz) | 2014 年 6 月 28 日

附录:各个源码文件的作用简介

+-------------------------------------------------------------------+-------------------------------------------------------------------+ | 文件 | 作用 | +===================================================================+===================================================================+ |

adlist.c
adlist.h
| 双端链表数据结构的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
ae.c
ae.h
ae_epoll.c
ae_evport.c
、 | 事件处理器,以及各个具体实现。 | |
ae_kqueue.c
ae_select.c
| | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
anet.c
anet.h
| Redis 的异步网络框架,内容主要为对 socket 库的包装。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
aof.c
| AOF 功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
asciilogo.h
| 保存了 Redis 的 ASCII LOGO 。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
bio.c
bio.h
| Redis 的后台 I/O 程序,用于将 I/O 操作放到子线程里面执行, | | | 减少 I/O 操作对主线程的阻塞。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
bitops.c
| 二进制位操作命令的实现文件。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
blocked.c
| 用于实现 BLPOP 命令和 WAIT 命令的阻塞效果。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
cluster.c
cluster.h
| Redis 的集群实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
config.c
config.h
| Redis 的配置管理实现,负责读取并分析配置文件, | | | 然后根据这些配置修改 Redis 服务器的各个选项。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
crc16.c
crc64.c
crc64.h
| 计算 CRC 校验和。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
db.c
| 数据库实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
debug.c
| 调试实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
dict.c
dict.h
| 字典数据结构的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
endianconv.c
endianconv.h
| 二进制的大端、小端转换函数。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
fmacros.h
| 一些移植性方面的宏。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
help.h
|
utils/generate-command-help.rb
程序自动生成的命令帮助信息。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
hyperloglog.c
| HyperLogLog 数据结构的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
intset.c
intset.h
| 整数集合数据结构的实现,用于优化 SET 类型。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
lzf_c.c
lzf_d.c
lzf.h
lzfP.h
| Redis 对字符串和 RDB 文件进行压缩时使用的 LZF 压缩算法的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
Makefile
Makefile.dep
| 构建文件。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
memtest.c
| 内存测试。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
mkreleasehdr.sh
| 用于生成释出信息的脚本。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
multi.c
| Redis 的事务实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
networking.c
| Redis 的客户端网络操作库, | | | 用于实现命令请求接收、发送命令回复等工作, | | | 文件中的函数大多为 write 、 read 、 close 等函数的包装, | | | 以及各种协议的分析和构建函数。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
notify.c
| Redis 的数据库通知实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
object.c
| Redis 的对象系统实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
pqsort.c
pqsort.h
| 快速排序(QuickSort)算法的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
pubsub.c
| 发布与订阅功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
rand.c
rand.h
| 伪随机数生成器。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
rdb.c
rdb.h
| RDB 持久化功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redisassert.h
| Redis 自建的断言系统。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis-benchmark.c
| Redis 的性能测试程序。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis.c
| 负责服务器的启动、维护和关闭等事项。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis-check-aof.c
redis-check-dump.c
| RDB 文件和 AOF 文件的合法性检查程序。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis-cli.c
| Redis 客户端的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis.h
| Redis 的主要头文件,记录了 Redis 中的大部分数据结构, | | | 包括服务器状态和客户端状态。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
redis-trib.rb
| Redis 集群的管理程序。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
release.c
release.h
| 记录和生成 Redis 的释出版本信息。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
replication.c
| 复制功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
rio.c
rio.h
| Redis 对文件 I/O 函数的包装, | | | 在普通 I/O 函数的基础上增加了显式缓存、以及计算校验和等功能。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
scripting.c
| 脚本功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
sds.c
sds.h
| SDS 数据结构的实现,SDS 为 Redis 的默认字符串表示。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
sentinel.c
| Redis Sentinel 的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
setproctitle.c
| 进程环境设置函数。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
sha1.c
sha1.h
| SHA1 校验和计算函数。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
slowlog.c
slowlog.h
| 慢查询功能的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
solarisfixes.h
| 针对 Solaris 系统的补丁。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
sort.c
| SORT 命令的实现。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
syncio.c
| 同步 I/O 操作。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
testhelp.h
| 测试辅助宏。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
t_hash.c
t_list.c
t_set.c
t_string.c
、 | 定义了 Redis 的各种数据类型,以及这些数据类型的命令。 | |
t_zset.c
| | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
util.c
util.h
| 各种辅助函数。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
valgrind.sup
| valgrind 的suppression文件。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
version.h
| 记录了 Redis 的版本号。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
ziplist.c
ziplist.h
| ZIPLIST 数据结构的实现,用于优化 LIST 类型。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
zipmap.c
zipmap.h
| ZIPMAP 数据结构的实现,在 Redis 2.6 以前用与优化 HASH 类型, | | | Redis 2.6 开始已经废弃。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+ |
zmalloc.c
zmalloc.h
| 内存管理程序。 | +-------------------------------------------------------------------+-------------------------------------------------------------------+

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.