Redis 6.2.1源码结构

最近在看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

猜你喜欢

转载自blog.csdn.net/witton/article/details/116118987
今日推荐