Redis之RDB持久化

版权声明:本文为博主原创文章,转正请注明出处。 https://blog.csdn.net/sinat_32366329/article/details/81160282

Redis之RDB持久化

简介

         Redis是内存数据库,它将自己的数据库信息存储到内存里面,但是如果不想办法将存储在内存中的数据保存到磁盘中,那么一旦服务器退出,服务器中的数据将会丢失。

         为了解决这个问题,Redis提供了RDB持久化和AOF持久化,可以将内存中的数据库信息保存到磁盘中,避免数据意外丢失。

         RDB持久化既可以手动执行,有可以根据服务器配置预定项执行,该功能可以将某个时间点上的数据库信息保存到一个RDB文件中。

         RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原数据库中的数据。

         因为RDB文件是保存在硬盘里面,所有即使Redis服务器进程退出,甚至运行Redis服务器的计算机停机,只要RDB文件仍然存在,Redis服务器就可以使用它来还原数据库中的数据。

RDB文件的创建和载入

         RDB文件的创建可以通过SAVE和BGSAVE命令来创建,其中SAVE命令会阻塞Redis服务器的进程,直到RDB文件创建完毕为止,在阻塞期间服务器不能处理任何命令请求。

         BGSAVE命令是派出一个子进程在后台负责创建RDB文件,服务器进程仍然可以继续处理请求。

         RDB文件的载入工作在Redis启动的时候,只要Redis服务器在启动的时候检测到RDB文件的存在,就会自动载入RDB文件恢复内存数据。

         另外,如果服务器开启了AOF持久化功能,那么服务器会优先使用AOF文件来还原数据库的信息,只有AOF持久化功能处于关闭状态时候,服务器才会使用RDB文件来恢复数据库状态,默认是RDB持久化。

SAVE命令创建RDB文件

         当SAVE命令执行的时候,Redis服务器会被阻塞,所以当SAVE命令正在执行的时候,客户端发送的所有命令请求都会被拒绝。

         只有当SAVE命令执行完毕的时候,服务器才会接受和处理客户端发送的请求。

BGSAVE命令创建RDB文件

         由于BGSAVE命令创建RDB文件是由子进程执行的,所以在子进程创建RDB文件的过程中,Redis仍然可以继续处理客户端的请求命令。但是如果在BGSAVE命令执行期间,是不会接受SAVE,BGSAVE命令的的执行的。

自动间隔性保存

         在我们实际应用中不可能时常通过SAVE和BGSAVE命令来将数据保存到RDB文件的,Redis为我们提供了便利,可以通过配置文件来让服务器执行BGSAVE命令。默认提供的配置信息如下:

save 900 1

服务器在900秒之内,对数据库进行了只是1次修改

save 300 10

服务器在300秒之内,对数据库进行了只是10次修改

save 60 10000

服务器在60秒之内,对数据库进行了只是10000次修改

 

猜你喜欢

转载自blog.csdn.net/sinat_32366329/article/details/81160282