redis的设计与实现学习记录
redis的学习分为以下几个部分
第一部分“数据结构与对象”
redis里面数据库里面的每个键值对都是由对象组成的,其中:数据库键总是一个字符串,而数据库建的值可以是字符串对象、列表对象(list object)、哈希对象(hash object)、集合对象(set object)、有序集合对象(sorted set object)这五种中的一种。
例如:
image.png image.png image.png image.png image.png
以上是对基本的新增删除操作
例如:key和value都是字符串对象
redis> set msg "hello world"
OK
而创建多个字符串的时候
例如为一个key创建5个字符串的值
redis> set munber 1 2 3 4 5
(integer) 5
第二部分“单机数据库的实现”
在以后的学习中,我们会学习到“数据库”对redis的实现原理,服务器保存键值对的过期时间的方法,服务器自动删除过期键值对的方法,“RDB持久化”,“AOF持久化”,还有redis的“事件”(文件的事件主要应答客户的连接请求,接收客户端发送的命令请求,以及向客户端返回命令回复)(时间事件主要是用于执行redis.c/serviceCron函数,这个函数通过执行常规的维护和管理操作保持redis服务器的正常)
第三部分“多机数据库的实现”
分为以下三个部分来对redis的复制(replication)、Sentinel、集群(cluster)三个多机进行介绍
复制对reids的主从复制功能的实现原理进行了介绍。说明了用户从一个指定的服务器复制另一个服务器时候,主从服务器之间执行了什么操作,进行什么数据的交换。。。
Sentinel对reids Sentinel的实现原理进行了介绍,说明了sentinel监视服务器的方法,sentinel判断服务器是否下线的方法。以及sentinel对下线服务器进行故障转移的方法。。。
“集群”对redis集群的实现原理的进行介绍,说明了节点构造方法,节点处理命令的请求方法,转发错误的实现方法,各个节点之间进行通信的方法。
第四部分“独立功能的实现”
包括了“发布与订阅”对publish、subscribe、pubsub等命令进行介绍。
事务:对multi、exec、watch等命令的实现原理进行实现原理介绍,解释了redis的事务如何实现。说明了redis的事务对ACID的性质的支持程度
lua脚本的一些基本命令的原理进行了介绍
排序对sort的命令以及sort命令的可选项
慢查询日志:redis创建和保存慢查询日志
监视器:将客户端变为监视器的方法,以及服务器处理命令请求时向监视器发送命令信息。