2 RDB持久化
服务器的数据库状态:服务器中的非空数据库以及它们的键值对
例子:包含三个非空数据库的Redis服务器,这三个数据库以及它们的键值对就是该服务器的数据库状态:
RDB:在某个时间点上将数据库状态保存到一个RDB文件上,也可以将RDB文件还原为数据库状态
注:因为AOF文件的更新频率通常比RDB高,所以服务器如果开启了AOF持久化功能,则优先使用AOF文件来还原数据库状态
2.1 RDB文件的创建与载入
2.1.1 创建
执行时期:使用SAVE和BGSAVE命令
- SAVE
1.状态:此命令会阻塞Redis服务器进程,直到RDB文件创建完毕
- BGSAVE
1.状态:此命令会派生出一个子进程,由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求
不过在处理命令请求时,SAVE、BGSAVE、BGREWRITERAOF这三个命令的方式和平时不同,如下图,显示了它们之间的运行关系及原因
2.实际工作函数:rdb.c/rdbSave函数: