RDB和AOF

3 分钟阅读 523 字 + 178 词
RDB持久化 :将当前数据保存到硬盘(原理是 将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化
RDB持久化也是redis默认的一个持久化方案,在指定的时间间隔内,执行指定次数的写操作,会将内存中的数据快照写入到磁盘中,在指定目录下生成一个dump.rdb文件。Redis 重启的时候会通过加载 dump.rdb文件恢复数据
RDB触发快照一共有四种方式,第一种是执行shutdown命令,第二种是flushall命令,第三种是执行save命令,以及在指定的时间间隔内,执行指定次数的写操作也是可以触发快照的
RDB的优点是适合大规模的数据恢复,并且如果业务对数据完整性和一致性要求不高的话,RDB是一个不错的选择。
RDB的缺点自然就是对数据完整性和一致性不高,并且备份的时候是占用内存,fork一个子进程,将数据写入到一个临时文件中,最后再将临时文件替换之前的备份文件。
AOF持久化 :将 每次执行的写命令保存到硬盘 (原理是 将Reids的操作日志以追加的方式写入文件,类似于MySQL的binlog ),数据恢复的按照从前往后的顺序再将指令都执行一遍。
AOF的同步策略可以在配置文件中可以修改 : appendfsync always , appendfsync everysec, appendfsync no
此外,AOF还会有一个 重写的机制 ,因为AOF的运作方式是将写命令不断的追加到文件末尾,而在其中一些命令是可以重写成一条命令的。所以redis可以在不打断服务客户端的情况下,对aof文件进行rebuild。
AOF的优点 就是 数据的完整性与一致性比较高
AOF的缺点就是需要执行写命令,数据恢复时间比较久,然后通过命令追加的形式,AOF文件的体积会比较大。
AOF和RDB持久化方式是可以同时使用起到互补的作用的。

目录