Redis源码分析(零)学习路径笔记

文章目录

    • 第一阶段
    • 第二阶段 熟悉Redis的内存编码结构
    • 第三阶段 熟悉Redis数据类型的实现
    • 第四阶段 熟悉Redis数据库的实现
    • 第五阶段 熟悉客户端和服务器端的代码实现
    • 第六阶段 这一阶段主要是熟悉Redis多机部分的代码实现
    • 关于测试方面的文件有
    • 一些工具类的文件如下
    • SORT命令的实现一些封装类的代码实现

第一阶段

阅读Redis的数据结构部分,基本位于如下文件中:

内容 文件名
内存分配 zmalloc.c和zmalloc.h
动态字符串 sds.h和sds.c
双端链表 adlist.c和adlist.h
字典 dict.h和dict.c
跳跃表 server.h文件里面关于zskiplist结构和zskiplistNode结构,以及t_zset.c中所有zsl开头的函数
基数统计 hyperloglog.c 中的 hllhdr 结构, 以及所有以 hll 开头的函数

第二阶段 熟悉Redis的内存编码结构

内容 文件名
整数集合数据结构 intset.h和intset.c
压缩列表数据结构 ziplist.h和ziplist.c

第三阶段 熟悉Redis数据类型的实现

内容 文件名
对象系统 object.c
字符串键 t_string.c
列表键 t_list.c
散列键 t_hash.c
集合键 t_set.c
有序集合键 t_zset.c中除 zsl 开头的函数之外的所有函数
HyperLogLog键 hyperloglog.c中所有以pf开头的函数

第四阶段 熟悉Redis数据库的实现

内容 文件名
数据库实现 redis.h文件中的redisDb结构,以及db.c文件
通知功能 notify.c
RDB持久化 rdb.c
AOF持久化 aof.c
  • 独立功能模块的实现
    发布和订阅 redis.h文件的pubsubPattern结构,以及pubsub.c文件
    事务 redis.h文件的multiState结构以及multiCmd结构,multi.c文件

第五阶段 熟悉客户端和服务器端的代码实现

内容 文件名
事件处理模块 ae.c/ae_epoll.c/ae_evport.c/ae_kqueue.c/ae_select.c
网路链接库 anet.c和networking.c
服务器端 redis.c
客户端 redis-cli.c
  • 这个时候可以阅读下面的独立功能模块的代码实现

    内容 文件名
    lua脚本 scripting.c
    慢查询 slowlog.c
    监视 monitor.c

第六阶段 这一阶段主要是熟悉Redis多机部分的代码实现

内容 文件名
复制功能 replication.c
Redis Sentinel sentinel.c
集群 cluster.c

关于测试方面的文件有

内容 文件名
memtest.c 内存检测
redis_benchmark.c 用于redis性能测试的实现
redis_check_aof.c 用于更新日志检查的实现
redis_check_dump.c 用于本地数据库检查的实现
testhelp.c 一个C风格的小型测试框架。

一些工具类的文件如下

内容 文件名
bitops.c GETBIT、SETBIT 等二进制位操作命令的实现
debug.c 用于调试时使用
endianconv.c 高低位转换,不同系统,高低位顺序不同
help.h 辅助于命令的提示信息
lzf_c.c 压缩算法系列
lzf_d.c 压缩算法系列
rand.c 用于产生随机数
release.c 用于发布时使用
sha1.c sha加密算法的实现
util.c 通用工具方法
crc64.c 循环冗余校验
sort.c 排序

SORT命令的实现一些封装类的代码实现

内容 文件名
bio.c background I/O的意思,开启后台线程用的
latency.c 延迟类
migrate.c 命令迁移类,包括命令的还原迁移等
pqsort.c 排序算法类
rio.c redis定义的一个I/O类
syncio.c 用于同步Socket和文件I/O操作

你可能感兴趣的:(数据库)