新书介绍 -- 《Redis 核心原理与实践》
大家好,今天给大家介绍一下我的新书 —— 《Redis核心原理与实践》。
后端开发的同学应该对 Redis 都不陌生,Redis 由于性能极高、功能强大,已成为业界非常流行的内存数据库。
《Redis 核心原理与实践》这本书深入地分析了 Redis 常用特性的内部机制与实现方式,大部分内容源自对 Redis 源码的分析,并从中总结出实现原理。通过阅读本书,读者可以快速、轻松地了解 Redis 的内部运行机制。
为什么写这本书?
我一直希望从源码层面深入分析一个 C 语言实现的分布式系统程序。原因如下:
(1)C 语言可以说是最接近低级语言的开发语言,分析 C 语言程序,可以让我们更深入理解操作系统底层知识。
(2)随着互联网行业发展,对后端系统高可用,高性能的要求越来越高,分布式系统也越来越流行。分析一个分布式系统的设计与实现,对我们的工作、学习都有很大帮助。
于是,我便阅读学习了 Redis 源码,并编写了《Redis 核心原理与实践》这本书。为什么选择 Redis 呢?因为 Redis 是一个典型的“小而美”的程序。
Redis 实现简单,源码非常优雅简洁,阅读起来并不吃力,而且 Redis 功能齐全,涵盖了数据存储,分布式,消息流等众多特性,非常值得深入学习。
通过写作这本书,我对 Redis,Unix 编程,分布式系统、存储系统都有了更进一层的理解,再学习其他相关的系统(如 Mysql、Nginx,Kafka),也可以举一反三,触类旁通。希望这本书也可以帮助读者百尺竿头,更进一步。
本书结构
第一部分主要分析了 Redis 中字符串、散列、列表、集合,有序集合这五种数据类型的编码格式。
编码格式,即数据的存储格式,对于数据库,数据的存储格式至关重要,如关系型数据库的行式存储和列式存储。而 Redis 作为内存数据库,对于数据编码的总体设计思想是:最大限度的“以时间换空间”,从而最大限度地节省内存。
这一部分内容详细分析了 Redis 对内存的使用如何达到“锱铢必较”的程度。
第二部分分析了 Redis 的核心流程,包括 Redis 事件机制与命令执行过程。
Redis 利用 IO 复用模型,实现了自己的事件循环机制,而 Redis 正在由该事件机制驱动运行(很多远程服务程序都是使用类似的架构,如 Nginx,Mysql 等)。
Redis 事件机制设计优雅,实现简单,并且性能卓越,可以说是“化繁为简”。
第三部分分析了 Redis 持久化与复制机制。虽然 Redis 是内存数据库,但仍然最大限度保证的数据的可靠性。
不管是文件持久化,还是从节点复制,核心思想都是一样的,通过将数据复制到多个副本中,从而保持数据安全。
这部分内容分析了 RDB、AOF 持久化机制,主从节点复制流程等内容,向读者展示了 Redis 数据是如何“不胫而走”的。
第四部分分析了 Redis 分布式架构。这部分内容从流行的分布式算法 Raft 算法出发,分析 Sentient 如何监控节点,Cluster 集群如何实现数据分片,支持动态新增、删除集群节点,以及它们的“拿手好戏"——故障转移。
分布式系统常常让我联想到一个有趣的词,铁索连舟(将集群节点想象为”舟“,节点之间的网络连接想象为”索“)。
第五部分分析了 Redis 中的高级特性,包括 Redis 事务、非阻塞删除、ACL 权限控制列表、Tracking 机制、Lua 脚本、Module 模块、Stream 消息流等内容,并且提供了详细的使用案例,帮助读者循序渐进,由浅到深地进行学习理解。
Redis 为各种高性能,高可用场景提供了非常全面的支持,可以说是”包罗万象“。
本书特点
本书深入分析 Redis 实现原理,并不是 Redis 入门书。为了尽量降低本书阅读难度,本书总结了 Redis 各核心功能的实现机制,提取 Redis 核心代码(本书会尽量避免堆积代码),并以适量图文,对 Redis 源码以及实现原理进行详细分析,向读者展示 Redis 核心功能的设计思想,实现流程。
本书虽然大部分内容基于 Redis 源码分析,但是并不复杂,即使你只是简单了解 C 语言的基础语法,也可以轻松读懂。
推荐理由
新版本:基于 Redis 6.0.9,并分析了 Redis 新特性,如 Redis 6 的 ACL、Tracking、IO 线程等机制。
重实践:本书在对应知识点的基础上提供了详细的应用示例,帮助读者由浅到深地学习和理解 Redis 新特性。
易掌握:本书总结了 Redis 各个核心功能的实现原理,并以适量图文、丰富示例,对 Redis 源码及其实现原理进行详细分析,循序渐进地向读者展示 Redis 核心功能的设计思想和实现流程。读者也可以结合本书,自行阅读 Redis 源码。
内容丰富:本书不仅分析了 Redis 的功能,还由 Redis 源码延展了如下两方面内容:
(1)详细介绍 Redis 中使用到的 Unix 机制,包括 Unix 网络编程、进程(线程)的应用等内容,并通过源码展示 Redis 如何使用这些 Unix 机制。
(2)深入分析 Redis 如何实现一个分布式系统,主要是 Sentinel、Cluster 机制如何实现一个高可用的分布式系统。
由于我能力有限,书中难免有遗漏或错误,若您在阅读本书的过程中有任何问题或者建议,欢迎大家沟通交流。我会对您提出的问题、建议进行梳理与反馈,并在本书后续版本中及时做出勘误与更新。
经过本书编辑同意,我后续会在个人技术公众号(binecy)发布书中部分章节内容,作为书的预览内容,欢迎大家查阅,谢谢。
版权声明: 本文为 InfoQ 作者【binecy】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf715f0acf74c9dc7f4c7347c】。文章转载请联系作者。
评论