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文件进行任何读入、分析或者写入操作。

posted on 2019-10-05 16:08  逍遥1989  阅读(112)  评论(0编辑  收藏  举报