在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshop快照,它恢复时,是将快照文件直接读到内存里。
Redis会单独创建(fork)一个子进程来进行持久化,会将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件替换上一次持久化好的文件,整个过程中,主进程时不进行任何io操作,这就确保了极高的性能。如果如果需要进行大规模的数据恢复,且对数据恢复的完整性不是非常敏感,那么RDB方式要比AOF方式更加的高效,RDB的缺点是最后一次持久化后的数据可能会丢失。
大部分情况下,默认是RDB,不需要修改配置。
RDB保存的触发时机
(1)save的规则满足的情况下,会地洞出发rdb规则;
(2)执行flushall 命令,也会出发我们的rdb规则;
(3)退出时,也会默认生成一个rdb文件。
恢复文件
(1)只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb文件,恢复其中的数据。
(2)如果不清楚存放到电脑的哪里,可输入如下命令查看
config get dir
优点:
(1)适合大规模的数据恢复(dump.rdb)。
(2)对数据的完整行要求不高,也可以使用rdb
缺点:
(1)有一定的时间间隔,如果redis意外宕机了,这个最后一次修改的数据就没了。
(2)fork进程的时候,会占用内存空间。
在生产环境,我们需要经常备份rdb文件。
---------------------------------------------------------------------------------------------------------------------
AOF
Append Only File
将我们所有执行的命令都记录下来,恢复的时候,就会把这个文件全部执行一遍。
它会以日志的形式来记录每一个写操作,将redis执行过程的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,启动之初,会读取文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次,已完成数据恢复的工作。
配置文件中的配置:
默认是不开启的!
优点:
(1)每次修改都同步,文件的完整性更加好。
(2)每秒同步一次,可能丢失一秒的数据。
(3)从不同步,效率最高。
缺点:
(1)数据文件大小来说,aof远远大于rdb,数据修复的数据非常慢。
(2)运行效率比rdb慢,所以我们redis默认的配置是rdb持久化。