redis阅读计划

作者:思者
链接:https://www.zhihu.com/question/28677076/answer/134193549
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第一阶段阅读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开头的函数,比如 zslCreate、zslInsert、zslDeleteNode等等。
基数统计 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.cAOF持久化 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.cRedis 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 压缩算法系列l
zf_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操作

整个Redis的源码分类大体上如上所述了,接下来就按照既定的几个阶段一一去分析Redis这款如此优秀的源代码吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容