Redis的持久化
1、数据库状态:服务器中的非空数据库以及它们的键值对统称为数据库状态。
2、持久化方式
(1)RDB持久化:将Redis在内存中的数据库状态保存到磁盘里面,生成一个经过压缩的二进制文件,避免数据意外丢失。
(2)AOF持久化:通过保存Redis服务器所执行的写命令来记录数据库状态的,AOF文件保存的是Redis命令请求协议格式,是纯文本格式。
3、生成RDB文件的命令
(1)SAVE:会阻塞Redis服务器进程,直到RDB文件创建完成为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。
(2)BGSAVE:会派生出一个子进程,由子进程负责创建RDB文件,服务器进程继续处理命令请求。
4、RDB文件的载入工作是在服务器启动时自动执行的,只要Redis服务器在启动时检测到RDB文件存在,它就会自动载入RDB文件,载入期间服务器会一直处于阻塞状态,直到载入工作完成为止。
5、服务器状态中会保存所有用save选项设置的保存条件,当任意一个保存条件被满足时,服务器会自动执行BGSAVE命令。
6、RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据,对于不同类型的键值对,RDB文件会使用不同的方式保存它们。
7、AOF持久化的实现可以分为命令追加、文件写入、文件同步三个步骤,命令请求会先保存到AOF缓冲区里面,之后再定期写入AOF文件,然后同步AOF文件到磁盘。
8、AOF文件重写:Redis服务器可以通过执行BGREWRITEAOF命令,首先会维护一个AOF重写缓冲区,该缓冲区会在子进程创建新AOF文件期间,记录服务器执行的所有写命令,当子进程完成创建AOF文件的工作之后,服务器会将重写缓冲区中的所有内容追加到新AOF文件的末尾,使新旧两个AOF文件数据库状态保持一致。最后,服务器用新的AOF文件替换旧的AOF文件。AOF重写是通过读取数据库中的键值对实现的,程序无需对现有AOF文件进行任何读入、分析或者写入操作。