每天工作都在大量使用 redis ,为了能在简历上写一句“熟悉 redis 阅读过部分源码”这周一拉了 6.0 的源码先从 sds 看起,虽然目前做 Java 开发,但 c 还是没怎么忘,毕竟是根源的东西,今天下班前终于读完了一千多行的 sds.c ,代码写得倒也是简单易懂,就这么流水账地读下来也没什么障碍,其实感觉最主要看下 sdsheader 和初始化时根据 initlen 选择哪个类型以及预分配多少长度就行了。重点思想就是通过 header.len O(1)获取长度和二进制安全,剩下什么 sdscat 、sdscatfmt 之类的功能性代码占比很大,虽然也是逐句看了,但估计很快也会忘了,接下来准备看 dict.c ,不知道之后是按之前看法逐行阅读还是主要看核心数据结构,目前感觉逐行看进度慢易疲劳,还容易忘,但也能多多少少的体会吸收到作者精简易读的代码风格
