Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!
RDB(Redis DataBase)
save的规则满足的情况下,会自动触发rdb规则。
执行 ?ushall 命令,也会触发我们的rdb规则。
退出redis,也会产生 rdb 文件。
优点:适合大规模的数据恢复、对数据的完整性要求不高
缺点:需要一定的时间间隔进程操作!如果redis意外宕机了,这个后一次修改数据就没有的了! fork进程的时候,会占用一定的内容空间
AOF(Append Only File)
将我们的所有命令都记录下来,类似于history,恢复的时候就把这个文件全部在执行一遍!
以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件 但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
默认是不开启的,我们需要手动进行配置!我们只需要将 appendonly 改为yes,重启,redis 就可以生效。
redis-check-aof --fix
可以修复aof文件
aof 默认就是文件的无限追加,文件会越来越大,默认如果 aof 文件大于 64m,就会fork一个新的进程来将我们的文件进行重写!
优点:每一次修改都同步,文件的完整会更加好。每秒同步一次,可能会丢失一秒的数据 。从不同步,效率最高。
缺点:相对于数据文件来说,aof远远大于rdb,修复的速度也比 rdb慢。 Aof 运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化。
原文:https://www.cnblogs.com/yinrz/p/13031326.html