您的位置:首页 > 数据库 > Redis

Redis——RDB和AOF持久化

2019-03-25 12:36 309 查看

一、RDB(Redis DataBase)

每隔一段时间就将内存上的数据存到磁盘上。

例:save 900 1        900秒内,对数据库进行了至少1次修改

       save 300 10      300秒内,对数据库进行了至少10次修改

       save 60 10000  60秒内,对数据库进行了至少10000次修改

Redis的周期性函数severCron默认每隔100毫秒执行一次,对正在运行的服务器做各种维护,其中一项工作就是检查save选项所设置的保存条件是否已经满足。若满足自动执行BGSAVE命令。

RDB文件的创建

SAVE命令:直接阻塞进程,直到文件创建完毕。

BGSAVE命令:派生出一个子进程来创建RDB文件。

RDB文件的载入

服务器在启动时若存在RDB文件,则自动载入。在载入RDB文件期间,服务器会一直处在阻塞状态。

若服务器开启了AOP持久化功能,则Redis会优先使用AOF来还原数据库状态。

二、AOF(Append Only File)

将redis执行过的所有写指令记录下来,保存在AOF缓冲区中,再用不同的同步策略将文件同步到磁盘,载入时通过伪客户端执行AOF文件中的命令。

同步策略:

AOF重写

因为采用了追加方式,如果不做任何处理的话,AOF文件会变得越来越大,为此,redis提供了AOF文件重写(rewrite)机制。

重写步骤:

1、创建(fork)一个“重写子进程”,读取现有的AOF文件,并将其包含的指令进行分析压缩并写入到一个临时文件中。

2、与此同时,将客户端执行的写命令,一边累积到内存缓冲区中,一边继续写入到原有的AOF文件中。

3、将缓冲区的命令写到新的AOF文件中,替换原有的AOF文件。

三、对比

RDB 恢复数据集的速度也要比 AOF 恢复的速度要快

AOF数据完整性较高

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: