1.2 章节编排

本书由“数据结构与对象”、“单机数据库的实现”、“多机数据库的实现”、“独立功能的实现”四个部分组成。

第一部分“数据结构与对象”

Redis数据库里面的每个键值对(key-value pair)都是由对象(object)组成的,其中:

·数据库键总是一个字符串对象(string object);

·而数据库键的值则可以是字符串对象、列表对象(list object)、哈希对象(hash object)、集合对象(set object)、有序集合对象(sorted set object)这五种对象中的其中一种。

比如说,执行以下命令将在数据库中创建一个键为字符串对象,值也为字符串对象的键值对:



redis> SET msg "hello world"
OK

而执行以下命令将在数据库中创建一个键为字符串对象,值为列表对象的键值对:



redis> RPUSH numbers 1 3 5 7 9
(integer) 5

本书的第一部分将对以上提到的五种不同类型的对象进行介绍,剖析这些对象所使用的底层数据结构,并说明这些数据结构是如何深刻地影响对象的功能和性能的。

第二部分“单机数据库的实现”

本书的第二部分对Redis实现单机数据库的方法进行了介绍。

第9章“数据库”对Redis数据库的实现原理进行了介绍,说明了服务器保存键值对的方法,服务器保存键值对过期时间的方法,以及服务器自动删除过期键值对的方法等等。

第10章“RDB持久化”和第11章“AOF持久化”分别介绍了Redis两种不同的持久化方式的实现原理,说明了服务器根据数据库来生成持久化文件的方法,服务器根据持久化文件来还原数据库的方法,以及BGSAVE命令和BGREWRITEAOF命令的实现原理等等。

第12章“事件”对Redis的文件事件和时间事件进行了介绍:

·文件事件主要用于应答(accept)客户端的连接请求,接收客户端发送的命令请求,以及向客户端返回命令回复;

·而时间事件则主要用于执行redis.c/serverCron函数,这个函数通过执行常规的维护和管理操作来保持Redis服务器的正常运作,一些重要的定时操作也是由这个函数负责触发的。

第13章“客户端”对Redis服务器维护和管理客户端状态的方法进行了介绍,列举了客户端状态包含的各个属性,说明了客户端的输入缓冲区和输出缓冲区的实现方法,以及Redis服务器创建和销毁客户端状态的条件等等。

第14章“服务器”对单机Redis服务器的运作机制进行了介绍,详细地说明了服务器处理命令请求的步骤,解释了serverCron函数所做的工作,并讲解了Redis服务器的初始化过程。

第三部分“多机数据库的实现”

本书的第三部分对Redis的Sentinel、复制(replication)、集群(cluster)三个多机功能进行了介绍。

第15章“复制”对Redis的主从复制功能(master-slave replication)的实现原理进行了介绍,说明了当用户指定一个服务器(从服务器)去复制另一个服务器(主服务器)时,主从服务器之间执行了什么操作,进行了什么数据交互,诸如此类。

第16章“Sentinel”对Redis Sentinel的实现原理进行了介绍,说明了Sentinel监视服务器的方法,Sentinel判断服务器是否下线的方法,以及Sentinel对下线服务器进行故障转移的方法等等。

第17章“集群”对Redis集群的实现原理进行了介绍,说明了节点(node)的构建方法,节点处理命令请求的方法,转发(redirection)错误的实现方法,以及各个节点之间进行通信的方法等等。

第四部分“独立功能的实现”

本书的第四部分对Redis中各个相对独立的功能模块进行了介绍。

第18章“发布与订阅”对PUBLISH、SUBSCRIBE、PUBSUB等命令的实现原理进行了介绍,解释了Redis的发布与订阅功能是如何实现的。

第19章“事务”对MULTI、EXEC、WATCH等命令的实现原理进行了介绍,解释了Redis的事务是如何实现的,并说明了Redis的事务对ACID性质的支持程度。

第20章“Lua脚本”对EVAL、EVALSHA、SCRIPT LOAD等命令的实现原理进行了介绍,解释了Redis服务器是如何执行和管理用户传入的Lua脚本的;这一章还对Redis服务器构建Lua环境的过程,以及主从服务器之间复制Lua脚本的方法进行了介绍。

第21章“排序”对SORT命令以及SORT命令所有可用选项(比如DESC、ALPHA、GET等等)的实现原理进行了介绍,并说明了当SORT命令带有多个选项时,不同选项执行的先后顺序。

第22章“二进制位数组”对Redis保存二进制位数组的方法进行了介绍,并说明了GETBIT、SETBIT、BITCOUNT、BITOP这几个二进制位数组操作命令的实现原理。

第23章“慢查询日志”对Redis创建和保存慢查询日志(slow log)的方法进行了介绍,并说明了SLOWLOG GET、SLOWLOG LEN、SLOWLOG RESET等慢查询日志操作命令的实现原理。

第24章“监视器”介绍了将客户端变为监视器(monitor)的方法,以及服务器在处理命令请求时,向监视器发送命令信息的方法。