文章目录
我分析的主要是redis 8.0版本src目录下的110个c文件。因为文件太多,所以需要进行分类,未来才好重点研究、各个击破。我把源码中的c文件分为了16类,未来分类研究更加高效便捷。
一、数据结构
| 文件 |
功能 |
| adlist.c |
双向链表实现 |
| dict.c |
哈希表实现 |
| intset.c |
整数集合 |
| listpack.c |
实现listpack数据结构,用来代替ziplist |
| quicklist.c |
快速列表 |
| rax.c |
基数树 |
| sds.c |
简单动态字符串 |
| geo.c |
地理空间索引 |
| geohash.c |
地理空间索引 |
| geohash_helper.c |
地理空间索引 |
| hyperloglog.c |
hyperloglog核心逻辑 |
| ziplist.c |
旧版底层数据结构 |
| zipmap.c |
旧版底层数据结构 |
二、彩蛋
| 文件 |
功能 |
| lolwut.c |
彩蛋 |
| lolwut5.c |
彩蛋 |
| lolwut6.c |
绘制Mandelbrot 集合或其他图案 |
比如第六版彩蛋是这样的:

三、类型命令
| 文件 |
功能 |
| t_stream.c |
stream类型命令 |
| t_set.c |
set类型命令 |
| t_list.c |
list类型命令 |
| t_zset.c |
zset类型命令 |
| t_hash.c |
哈希类型命令 |
| t_string.c |
string类型命令 |
四、事件循环
| 文件 |
功能 |
| ae.c |
事件驱动循环 |
| ae_epoll.c |
linux系统实现 |
| ae_evport.c |
Solaris专用 |
| ae_kqueue.c |
mac专用 |
| ae_select.c |
老旧linux使用 |
| ebuckets.c |
事件桶 |
| eventnotifier.c |
事件通讯器 |
五、内存
| 文件 |
功能 |
| defrag.c |
内存碎片整理 |
| evict.c |
内存淘汰策略 |
| expire.c |
过期键删除 |
| zmalloc.c |
内存管理 |
| memtest.c |
内存测试 |
六、持久化
| 文件 |
功能 |
| aof.c |
aof持久化 |
| rdb.c |
rdb快照 |
| redis-check-aof.c |
aof修复工具 |
| redis-check-rdb.c |
rdb修复工具 |
七、crc算法
| 文件 |
功能 |
| crc16.c |
crc16校验算法 |
| crc64.c |
crc64校验算法 |
| crccombine.c |
CRC组合计算功能 |
| crcspeed.c |
crc计算的功能优化 |
八、命令行
| 文件 |
功能 |
| cli_commands.c |
命令定义表 |
| cli_common.c |
命令行工具共用代码 |
| commands.c |
redis命令表定义 |
| redis-cli.c |
命令行客户端 |
| sort.c |
排序命令 |
九、网络及IO
| 文件 |
功能 |
| anet.c |
封装网络函数 |
| resp_parser.c |
协议解析引擎 |
| call_reply.c |
RESP3协议解析器 |
| networking.c |
网络与客户端管理 |
| tls.c |
传输层安全 |
| bio.c |
后台io服务 |
| blocked.c |
阻塞操作与客户端挂起管理 |
| connection.c |
连接抽象层 |
| rio.c |
基础io抽象层 |
| syncio.c |
同步IO |
| socket.c |
连接封装 |
| iothread.c |
多线程io模型 |
十、算法
| 文件 |
功能 |
| lzf_d.c |
LZF算法解压 |
| lzf_c.c |
LZF算法压缩 |
| sha1.c |
哈希算法 |
| sha256.c |
哈希算法 |
| siphash.c |
哈希函数 |
| pqsort.c |
并行快速排序 |
| mt19937-64.c |
高质量随机数 梅森旋转算法 |
| rand.c |
实现高质量的伪随机数生成器 |
十一、lua脚本
| 文件 |
功能 |
| function_lua.c |
lua语言函数支持 |
| functions.c |
lua函数的管理层 |
| script.c |
脚本管理 |
| script_lua.c |
lua环境脚本 |
十二、分布式
| 文件 |
功能 |
| cluster.c |
分布式集群模式功能,实现gossip协议 |
| cluster_legacy.c |
保留了一些向后兼容的函数 |
| replication.c |
主从复制功能 |
| sentinel.c |
哨兵模式 |
十三、调试
| 文件 |
功能 |
| debug.c |
强制触发异常等调试功能 |
| redis-benchmark.c |
压力测试工具 |
| redisassert.c |
调试与断言 |
十四、字符串
| 文件 |
功能 |
| bitops.c |
字符串底层二进制处理 |
| mstr.c |
标准字符串的安全加固版 |
| strl.c |
安全字符串 |
十五、监控
| 文件 |
功能 |
| logreqres.c |
慢查询日志实现 |
| latency.c |
延迟监控 |
| slowlog.c |
慢查询日志 |
| sparkline.c |
ascii图表 |
| tracking.c |
客户端缓存跟踪 |
| timeout.c |
超时管理 |
十六、服务器核心
| 文件 |
功能 |
| acl.c |
访问控制,redis 6.0新增 |
| childinfo.c |
父子进程通讯 |
| config.c |
处理redis配置文件 |
| db.c |
数据库核心逻辑 |
| endianconv.c |
字节序转换 |
| eval.c |
核心执行引擎 |
| kvstore.c |
键值存储抽象 |
| lazyfree.c |
用于解决大件删除的阻塞问题 |
| localtime.c |
获取本地时间 |
| module.c |
模块系统的核心 |
| monotonic.c |
单调时钟 |
| multi.c |
事务处理 |
| notify.c |
键空间通知 |
| object.c |
对象系统 |
| pubsub.c |
发布订阅 |
| release.c |
版本与构建信息 |
| server.c |
服务器核心 |
| setcpuaffinity.c |
cpu亲和性 |
| setproctitle.c |
进程名修改 |
| syscheck.c |
系统检查 |
| threads_mngr.c |
线程管理 |
| unix.c |
unix系统结构 |
| util.c |
通用工具 |