博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis源码分析(零)学习路径笔记
阅读量:2489 次
发布时间:2019-05-11

本文共 1566 字,大约阅读时间需要 5 分钟。

文章目录

第一阶段

阅读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操作

转载地址:http://lzorb.baihongyu.com/

你可能感兴趣的文章
51nod1347(简单逻辑)
查看>>
设计模式_单实体模式
查看>>
http解码-5
查看>>
mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
查看>>
什么原因接触接触impala的
查看>>
atcoder A - Frog 1(DP)
查看>>
剑指offer之 旋转数组的最小数字
查看>>
MySql开启事务
查看>>
SpringBoot整合SpringBatch实用简例
查看>>
使用git上传代码到github远程仓库
查看>>
python之random模块
查看>>
git初探
查看>>
MyBatis总结
查看>>
二分查找
查看>>
poj 1328贪心
查看>>
apk瘦身
查看>>
《大话设计模式》--模板模式
查看>>
JAVA中通过时间格式来生成唯一的文件名
查看>>
测试工作中常用的方法
查看>>
工欲善其事必先利其器系列之:在VS里面折叠js代码
查看>>