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

本文详细介绍了Redis6.2.1版本的源码结构与各个文件的功能,涵盖了从数据结构实现到服务器主逻辑等核心内容,是理解Redis工作原理的重要参考资料。

被折叠的 条评论
为什么被折叠?



