Redis 5设计与源码分析
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

2年前,我们团队建立了学习圈,团队成员可以自愿参加,每天8:50~10:30到公司充电100分钟,深入剖析工作中的技术栈,同时2017~2018年编写出版了《PHP 7底层设计与源码实现》一书,接着我们又深入研读了Redis的源码。2018年年初开始,我们开始了Redis源码一书的编写,起初是研读Redis 4.0版本的源码,2018年下半年5.0版本发布,增加了很多的新特性,下半年我们又在之前的基础上结合Redis 5的源码,编写了此书。

Redis是一款高性能的开源key-value型数据库,难能可贵的是代码写得非常优雅,非常适合刚入门C语言的读者阅读。本书前半部分详细介绍了Redis中的各种数据结构,适合读者学习和掌握基本的数据结构;后半部分介绍了Redis命令执行的生命周期,以及各类命令的源码实现,希望使用Redis的读者不止会使用Redis,并且能掌握它的原理和细节,提升对Redis的掌控能力。

决定编写Redis源码一书后,学习圈里方波、黄桃、李乐、施洪宝、熊浩含、闫昌、张仕华、周生政和我一起编写了这本书。大家在工作之外,每天写到深夜,周末一起探讨,经过一年的编写和校对,终于完成了这本书。希望能给使用Redis的读者一些启发,帮助更多的人理解Redis的实现。

读者对象

❏ 使用Redis的工程师、架构师

❏ 对Redis源码感兴趣的读者

❏ 有一定C语言基础的读者

如何阅读本书

本书内容逻辑上分为三篇,共计22章内容。

第一篇:第1章简单介绍了Redis,以及Redis的编译安装和研读的方式;第2~8章重点讲解了SDS、跳跃表、压缩列表、字典、整数集合、quicklist和Stream数据结构的实现。

第二篇:第9章讲解了Redis的生命周期,命令执行的过程,需要重点阅读;第10~19章,分别讲解了键、字符串、散列表、链表、集合、有序集合、GEO、HyperLog和数据流相关命令的实现。

第三篇:第20~22章简单讲解了持久化、主从复制和集群的实现,没有详细展开,希望能带读者入门。

如果读者是有一定经验的资深开发人员,本书可能会是一本不错的案头书。当然,如果读者是一名初学者,请在开始本书阅读之前,建议先掌握一些C语言和网络编程等基础理论知识。

勘误和支持

由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有更多的宝贵意见,欢迎访问https://segmentfault.com/u/php7internal进行专题讨论,我们会尽量在线上为读者提供解答。同时,您也可以通过微博@PHP7内核,或者邮箱cltf@163.com联系到我们,期待能够得到您的反馈,在技术之路上互勉共进。

致谢

感谢张国辉、卢红波两位工作导师的支持,前者是我现在的领导,也是我在技术和管理方面的导师,后者是我在滴滴的领导,在技术和管理上给了我很多的指引与帮助。

感谢黑夜路人(谢华亮)兄弟的指导和支持,在技术上给了非常多的指点。

感谢黄健宏、黄鹏程、付磊、钱文品、张晋涛和吴建超兄弟的指导与建议,他们都是在Redis方面有很深研究的人。

感谢方波、黄桃、李乐、施洪宝、熊浩含、闫昌、张仕华和周生政8位兄弟在学习和研究过程中的陪伴与合作,本书是几位兄弟共同合作的结晶。特别是黄桃,已经跟我一起编写了两本书。

特别致谢

最后,我要特别感谢我的太太梦云、儿子和女儿,我为写作这本书,牺牲了很多陪伴她们的时间,但也正因为有了她们的付出与支持,我才能坚持写下去。同时,感谢我的父母、岳父岳母,不遗余力地帮助我们照顾儿女,有了你们的帮助和支持,我才有时间和精力去完成写作工作。

另外要特别感谢我团队的兄弟们,感谢大家的坚持,为大家的成长点赞!重点感谢一下兄弟们背后的太太团,是她们的大力支持,作者们才有时间来编写本书。

最后要重点感谢高婧雅编辑,这是第二次跟她合作,她依然非常负责;她耐心审稿,给出很多宝贵建议,才有了这本书的完成。

谨以此书献给我最亲爱的家人和团队的兄弟们,以及众多热爱Redis的朋友们!

陈 雷