最近在看Redis 6.2.1的源码,现把Redis源文件目录中各文件实现的功能作一个整理和简要说明(按文件名排序),如有错漏之处请在留言。
文件名 | 简要说明 |
---|---|
acl.c | ACL(Access Control List) 权限控制 |
adlist.c | 数据结构链表的实现 |
adlist.h | 数据结构链表的API |
ae.c | 简单的事件驱动模块实现 |
ae.h | 简单的事件驱动模块API |
ae_epoll.c | 使用epoll模型来做事件驱动,用于Linux,为Linux下高效模型 |
ae_evport.c | 使用evport模型来做事件驱动,用于Solaris,为Solaris下高效模型 |
ae_kqueue.c | 使用kqueue模型来做事件驱动,用于mac |
ae_select.c | 使用select模型来做事件驱动,用于各系统,select模型是非常低效的模型,目前Windows下默认使用select模型,还未支持IOCP |
anet.c | 基本的网络Socket操作 |
anet.h | 基本的网络Socket操作API |
aof.c | AOF(append only file)用于记录写操作以及数据恢复 |
asciilogo.h | 代码内嵌的Redis Logo,由于该Logo都是由Ascii编码组成,所以为asciilogo |
atomicvar.h | 变量的原子操作,使用C11实现 |
bio.c | Background I/O,即后台IO操作,专门启动了一个后台线程来处理 |
bio.h | 后台IO操作API |
bitops.c | 位操作模块 |
blocked.c | 阻塞操作支持模块,类似BLPOP与WAIT |
childinfo.c | 管道(pipe)操作,用于RDB / AOF保存时的通信 |
cli_common.c | CLI (command line interface)命令行接口基础函数 |
cli_common.h | CLI (command line interface)命令行接口基础函数或者结构 |
cluster.c | 集群实现模块 |
cluster.h | 集群API |
config.c | 配置参数处理 |
config.h | 配置参数处理 |
connection.c | 网络连接模块 |
connection.h | 网络连接API |
connhelpers.h | 网络连接辅助函数 |
crc16.c | 计算CRC16 |
crc16_slottable.h | CRC16映射的最短字母数字字符串表 |
crc64.c | 计算CRC64 |
crc64.h | CRC64 API |
crcspeed.c | 生成CRC16以及CRC64的表,用于快速计算CRC16或者CRC64 |
crcspeed.h | 生成CRC16以及CRC64表的API |
db.c | 数据/数据库操作 |
debug.c | 调试模块 |
debugmacro.h | 用于调试模块的宏 |
defrag.c | 活跃内存的碎片整理 |
dict.c | 字典实现模块 |
dict.h | 字典API |
endianconv.c | 字节序转换模块 |
endianconv.h | 字节充转换API |
evict.c | 最近最少使用LRU(Least Recently Used)剔除策略 |
expire.c | 数据过期处理模块 |
fmacros.h | 一些宏定义 |
geo.c | 地理位置信息模块 |
geo.h | 地理位置信息结构 |
geohash.c | 地理位置Hash编码 |
geohash.h | 地理位置Hash编码API |
geohash_helper.c | 地理位置Hash编码辅助函数 |
geohash_helper.h | 地理位置Hash编码辅助函数 |
gopher.c | Gopher协议处理 |
help.h | 命令格式帮助,使用./utils/generate-command-help.rb生成 |
hyperloglog.c | 基数统计模块,用于统计给定一组数据的基数,比如{1,2,2,3,4,5,5}的基数为5,即{1,2,3,4,5} |
intset.c | 整数集合处理,Redis会根据数据类型分配16位,32位以及64位的整数,当数据超过表示范围时,Redis会自动进行升级(升级后不能降级) |
intset.h | 整数集合处理API |
latency.c | 延迟监控 |
latency.h | 延迟监控API |
lazyfree.c | 惰性释放内存 |
listpack.c | 压缩list数据结构 |
listpack.h | 压缩list数据结构API |
listpack_malloc.h | 压缩list数据结构内存分配器 |
localtime.c | 日期时间相关函数 |
lolwut.c | LOLWUT命令处理,该命令随机生成一系列字符串。不同的Redis版本可能会有不同的表现。 |
lolwut.h | LOLWUT命令的API |
lolwut5.c | LOLWUT命令实现版本 |
lolwut6.c | LOLWUT命令实现版本 |
lzf.h | lzf压缩算法API |
lzfP.h | lzf压缩算法宏定义 |
lzf_c.c | lzf压缩算法的压缩函数实现 |
lzf_d.c | lzf压缩算法的解压函数实现 |
memtest.c | 内存测试 |
module.c | Redis模块功能 |
monotonic.c | 时钟处理 |
monotonic.h | 时钟处理API |
mt19937-64.c | 64位版本的Mersenne扭转伪随机数 |
mt19937-64.h | 64位版本的Mersenne扭转伪随机数API |
multi.c | Redis事务开始指令multi的处理模块 |
networking.c | 网络处理 |
notify.c | 键值事件通知,主要用于发布/订阅 |
object.c | Redis对象操作 |
pqsort.c | 部分排序 |
pqsort.h | 部分排序API |
pubsub.c | 发布与订阅 |
quicklist.c | 快速链表,也是一个双向链表 |
quicklist.h | 快速链表API |
rand.c | 伪随机数 |
rand.h | 伪随机数API |
rax.c | 基数树(radix tree)算法实现 |
rax.h | 基数树(radix tree)API |
rax_malloc.h | 基数树(radix tree)算法内存分配器 |
rdb.c | Redis数据库 |
rdb.h | Redis数据库API |
redis-benchmark.c | Redis性能测试 |
redis-check-aof.c | Redis Aof(append only file)文件检测 |
redis-check-rdb.c | Redis数据库文件检测 |
redis-cli.c | Redis命令行接口 |
redisassert.h | Redis Assert断言函数 |
redismodule.h | Redis模块功能API |
release.c | Redis版本发布的版本号相关函数 |
release.h | Redis版本发布相关宏 |
replication.c | Redis异步复制 |
rio.c | Redis IO操作 |
rio.h | Redis IO操作API |
scripting.c | Lua脚本支持 |
sds.c | 动态字符串 |
sds.h | 动态字符串API |
sdsalloc.h | 动态字符串内存分配器 |
sentinel.c | 哨兵模式实现 |
server.c | Redis服务器主逻辑,入口所在 |
server.h | Redis的一些数据结构定义以及服务器逻辑API |
setcpuaffinity.c | 设置CPU关联,即可以指定Redis在哪些CPU核心中运行,仅用于Linux/BSD |
setproctitle.c | 设置进程标题,仅用于Linux/Darwin |
sha1.c | SHA1算法 |
sha1.h | SHA1算法API |
sha256.c | SHA256算法 |
sha256.h | SHA256算法API |
siphash.c | SipHash算法,该算法可以防止Hash洪水攻击 |
slowlog.c | 慢查询日志 |
slowlog.h | 慢查询日志API |
solarisfixes.h | Solaris兼容 |
sort.c | 排序功能 |
sparkline.c | 使用ASCII编码绘制的走势图 |
sparkline.h | 走势图API |
stream.h | stream消息队列中间件API |
syncio.c | 同步IO实现 |
testhelp.h | 小型的C测试框架宏定义 |
timeout.c | 超时处理 |
tls.c | 使用OpenSSL实现的传输层安全(Transport Layer Security) |
tracking.c | 数据跟踪和失效,用于客户端缓存 |
t_hash.c | Hash相关操作 |
t_list.c | 链表相关操作 |
t_set.c | 集合相关操作 |
t_stream.c | stream消息队列中间件相关操作 |
t_string.c | 字符串相关操作 |
t_zset.c | 有序集合相关操作 |
util.c | 一些实用的辅助函数 |
util.h | 辅助函数API |
version.h | Redis版本号定义 |
ziplist.c | 与Listpack类似的另一种压缩链表实现 |
ziplist.h | 另一种压缩链表实现 |
zipmap.c | 一种键值映射算法 |
zipmap.h | 键值映射算法API |
zmalloc.c | 内存分配器 |
zmalloc.h | 内存分配器API |
Redis支持的主要数据类型为List(链表)、String(字符串)、Set(集合)、ZSet(有序集合)。但是内部或者底层使用的数据结构则比较丰富,有:
- sds
- adlist
- quicklist
- skiplist
- listpack
- ziplist
- dict
- intset
- siphash
- zipmap
- radix tree
- HyperLogLog
- geo