阅读源码是学习一门技术的必经之路,经过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事件循环这块还是没有读太懂。一回生二回熟,熟能生巧,再接再厉。

但是最终大抵是读完了。

未完待续。

see also at http://www.shutdown.cn/post/redis-read-code-01-start-flow/

Redis源码阅读01-读了一下redis启动流程涉及的源码我都读了个啥相关推荐

  1. spring源码阅读(3)-- 容器启动之BeanFactoryPostProcessor

    接着上文<spring源码阅读(2)-- 容器启动之加载BeanDefinition>,当spring加载完所有BeanDefinition时,并不会马上去创建bean,而是先配置bean ...

  2. Netty源码分析第1章(Netty启动流程)----第4节: 注册多路复用

    Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用 Netty源码分析第一章:Netty启动流程   第四节:注册多路复用 回顾下以上的小节, 我们知道了channe ...

  3. 【SemiDrive源码分析】【X9芯片启动流程】08 - X9平台 lk 目录源码分析 之 目录介绍

    [SemiDrive源码分析][X9芯片启动流程]08 - X9平台 lk 目录源码分析 之 目录介绍 一./rtos/lk/ 目录结构分析 1.1 /rtos/lk_boot/ 目录结构分析 1.2 ...

  4. 【SemiDrive源码分析】【X9芯片启动流程】30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一)

    [SemiDrive源码分析][X9芯片启动流程]30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一) 一.Android Kernel 启动流程分析 ...

  5. 【SemiDrive源码分析】【X9芯片启动流程】12 - freertos_safetyos目录Cortex-R5 DIL2.bin 之 sdm_display_init 显示初始化源码分析

    [SemiDrive源码分析][X9芯片启动流程]12 - freertos_safetyos目录Cortex-R5 DIL2.bin 之 sdm_display_init 显示初始化源码分析 一.s ...

  6. 【SemiDrive源码分析】【X9芯片启动流程】21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇

    [SemiDrive源码分析][X9芯片启动流程]21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇 一.Mailbox for Linux 驱动框架分 ...

  7. 【SemiDrive源码分析】【X9芯片启动流程】20 - MailBox 核间通信机制介绍(代码分析篇)之 MailBox for RTOS 篇

    [SemiDrive源码分析][X9芯片启动流程]20 - MailBox 核间通信机制介绍(代码分析篇)之 MailBox for RTOS 篇 一.Mailbox for RTOS 源码分析 1. ...

  8. 【SemiDrive源码分析】【X9芯片启动流程】19 - MailBox 核间通信机制介绍(理论篇)

    [SemiDrive源码分析][X9芯片启动流程]19 - MailBox 核间通信机制介绍(理论篇) 一.核间通信 二.核间通信软件架构 三.Mailbox 设备驱动 3.1 Mailbox for ...

  9. 【SemiDrive源码分析】【X9芯片启动流程】23 - MailBox 核间通信机制介绍(代码分析篇)之 RPMSG-IPCC Kernel 篇

    [SemiDrive源码分析][X9芯片启动流程]23 - MailBox 核间通信机制介绍(代码分析篇)之 RPMSG-IPCC Kernel 篇 一.RPMSG 接口 1.1 Linux Kern ...

最新文章

  1. 通过一个端口读取多个按钮
  2. Qt Remote Object(QtRO)实现进程间通信
  3. Kotlin学习系列(二)
  4. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了(转载)...
  5. TCP/IP之路由算法
  6. 【打印代码+好好理解+子串问题】LeetCode 76. Minimum Window Substring
  7. pix4d怎么查看点云数据_PIX4D的两种像控点刺点方式探讨
  8. win7上安装mysql数据库_mysql-windows系统安装mysql数据库
  9. [ NOI 2005 ] 聪聪与可可
  10. 用友nc系统服务器是云端吗,用友NC服务器硬件配置要求
  11. 55寸0.88mm拼接屏对比1.8mm拼接显示效果
  12. 腐蚀rust服务器命令_服务器指令_腐蚀rust服务器命令一览 腐蚀rust有哪些服务器命令_3DM单机...
  13. QuartusⅡ开发alteraFPGA如何约束时钟(关于消除警告Timing requirements not met)
  14. RMQ与SparseTable(ST表)
  15. 设计一套简单的计算机系统及其指令系统,【精品】计算机组成综合设计指导书...
  16. 连锁定位(Linkage Mapping)与关联定位(Association Mapping)
  17. java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
  18. 微信会员卡系统如何助力服装店提升业绩(下)
  19. Planet数据教育研究使用账号申请
  20. ManytoMany字段属性through和through_fields

热门文章

  1. 连续巨亏3年,深陷舆论风波,资本宠儿蛋壳公寓竟越混越差?
  2. 仿招商银行APP指纹识别弹框
  3. [喵咪海外部署]海外部署访问技术探索
  4. 游戏运营环节的一些关键转化率
  5. 2019中国(北京)国际智慧工地装备展览会
  6. 《8.按键和CPU的中断系统》
  7. 60年技术简史,带你读懂AI的前世今生
  8. Windows8 新进展(9月24日)
  9. 文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具
  10. 社交电商如何升级广告电商互联网社会流量为王,怎样复制别人的成功?