Redis之RDB持久化

Redis之RDB持久化

简介

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

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

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

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

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

RDB文件的建立和载入

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

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

         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次修改