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

第一阶段

阅读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 Sentinelsentinel.c
集群cluster.c

关于测试方面的文件有

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

一些工具类的文件如下

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

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

内容文件名
bio.cbackground I/O的意思,开启后台线程用的
latency.c延迟类
migrate.c命令迁移类,包括命令的还原迁移等
pqsort.c排序算法类
rio.credis定义的一个I/O类
syncio.c用于同步Socket和文件I/O操作
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值