Redis源码阅读01-读了一下redis启动流程涉及的源码我都读了个啥
阅读源码是学习一门技术的必经之路,经过1周左右的c语言入门学习,我就开始硬读redis的源码了。因为公司的多版本的改造,所以源码就选择redis6.x的最高版本redis6.2.7。
在阅读源码前,首先要有一些c语言的基础,所以推荐先学一学c语言的基本语法,推荐的书是《c primer plus》,这本书讲的特别细,既可以当作入门的书来看,也可以作为工具书,在遇到问题的时候翻一翻。
阅读源码应该从哪读起,不同的人有不同的看法,比如陈雷的《redis5源码设计与分析》这本书里面,首先是从redis的数据结构开始入手进行介绍的。而《Redis源码剖析与实战》的蒋德钧是从项目的目录结构开始进行介绍的。我比较急,直接就从启动开始看。我的阅读习惯就是从启动流程开始,最好是可以边跑边读,所以我首先找到redis-server的启动入口。redis-server嘛,入口就是server.c的main方法了。在redis2.x的版本里,这个文件的名就是redis-server.c,这点得注意。
读源码的过程中,为了避免看了一眼,隔天就忘的情况,我会在代码上面增加一些注释,来记录一下方法的功能,亦或者把方法的原来的英文注释说明给翻译一下。遇到一些linux的底层方法,就把方法的说明在用处进行记录。
另外使用脑图工具把整个启动流程中调用的方法进行记录,把比较关键的点使用标记进行标注。
有一些看不懂的地方,就加一些printf
语句将参数、结果等进行输出,这样可以从结果对执行过程或者是方法功能进行反推。
有一个缺点是,这么看源码真的是又慢又麻烦。但是会有脑图和经过注释的代码的输出。不算是毫无成果。会比看过就忘好一些。
同事有建议我读点重要的就行,比如说redis的数据结构,不知道xx原理不一样维护集群。我觉得不然。
在读过以后我也有一些自我怀疑,我读了源码以后和没读有啥区别,我看过了以后究竟弄懂了什么?我读过以后,把每一步都列出来,然后才好去看哪步是重要的,哪步是不重要的。别人总结的东西毕竟是别人的东西,我自己总结的是我自己的。
看过了以后其实脑子里面先有个印象,
无论是简单还是复杂的文档,一定要有输出才行。输出的东西才是自己的东西。
因为C语言用的很少,所以要自己亲自写的话还是有困难的,第一先混个代码脸熟。
ae事件循环这块还是没有读太懂。一回生二回熟,再接再厉。
但是最终大抵是读完了。
未完待续。