数据库:
1.Redis服务器所有的数据库都保存在redisServer.db数组中,而数据库的数量则由redisServer.dbnum属性保存。
2.客户端通过修改目标数据库指针,让它指向redisServer.db数组中的不同元素来切换不同的数据库。(ex:select 1,数据库初始情况下为select 0)
3.数据库主要由dict和expires两个字典构成,其中dict字典负责保存键值对,而expires字典则负责保存键的过期时间。
4.因为数据库由字典构成,所以对数据库的操作都是建立在字典操作之上的。
5.数据库的键总是一个字符串对象,而值则可以是任意一种Redis对象类型,包括字符串对象、哈希对象、集合对象、列表对象和有序集合对象,分别对应字符串键、哈希表键、集合键、列表建和有序集合键。
6.expires字典的键指向数据库中的某个键,而值则记录了数据库键的过期时间,过期时间是一个以毫秒为单位的UNIX时间戳。
7.Redis使用惰性删除和定期删除两种策略来删除过期的键:惰性删除策略只在碰到过期键时才进行删除操作,定期删除策略则每隔一段时间主动查找并删除过期键。
8.执行SAVE命令或者BGSAVE命令所产生的新RDB文件不会包含已经过期的键。
9.执行BGREWRITEAOF命令所产生的重写AOF文件不会包含已经过期的键。
10.当一个过期键被删除之后,服务器会追加一条DEL命令到现有AOF文件的末尾,显式地删除过期键。
11.当主服务删除一个过期键之后,它会向所有从服务器发送一条DEL命令,显式地删除过期键。
12.从服务器即使发现过期键也不会自作主张删除它,,而是等待主节点发来DEL命令,这种统一、中心化的过期键删除策略可以保证主从服务器数据的一致性。
13.当Redis命令对数据库进行修改之后,服务器会根据配置向客户端发送数据库通知。
RDB持久化
1.RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据。
2.SAVE命令由服务器进程直接执行保存操作,所有该命令会阻塞服务器。
3.BGSAVE命令由子进程执行保存操作,所以该命令不会阻塞服务器。
4.服务器状态中会保存所有save选项设置的保存条件,当任意一个保存条件被满足时,服务器会自动执行BGSAVE命令。
例如:
5.RDB文件是一个经过压缩的二进制文件,由多个部分组成。
6.对于不同类型的键值对,RDB文件会使用不同的方式来保存他们
AOF持久化
1.AOF文件通过保存所有修改数据库的写命令来记录服务器的数据库状态。
2.AOF文件中的所有命令都以Redis命令请求协议的格式保存。
3.命令请求会先保存到AOF缓冲区里面,之后再定期写入并同步到AOF文件。
4.appendsync选项的不同值对AOF持久化功能的安全性以及Redis服务器的性能有很大影响。
5.服务器只要载入并重新执行保存在AOF文件中的命令,就可以还原数据库本来的状态。
6.AOF重写可以产生一个新的AOF文件,该功能是通过读取数据库中的键值对来实现的,程序无须对现有AOF文件进行任何读入,分析或者写入操作。
事件
Redis安装相关
官网下载redis,传进服务器解压安装
安装Redis时可能出现的错误:
1.进入文件夹make之后,出错,需要在线安装gcc
yum -y install gcc
2.编译成功后,使用make test测试是否可运行,出错,需要在线安装tcl
yum install tcl