一、RDB
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。主进程是不进行任何IO操作的。
如果需要进行大规模数据恢复,且对于数据恢复的完整性不是非常敏感,那么RDB方式要比AOF方式更加高效。RDB的缺点是最后一次持久化后的数据可能丢失。
RDB保存的文件是dump.rdb,可在redis.conf配置文件中修改。
dbfilename dump.rdb
详细配置参考:Redis进阶知识
持久化触发机制:
- 配置文件中save规则满足时
- 执行flushall命令
- 退出redis
恢复文件:只需将.rdb文件放在redis启动目录即可,redis启动时会自动检查dump.rdb。
优点:
- 适合大规模的数据恢复。
- 对数据完整性要求不高。
缺点:
- 需要一定的时间间隔进程操作,如果redis意外宕机了,最后一次修改的数据就没有了。
- fork进程的时候,会占用一定的内存。
二、AOF
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
AOF保存的文件是appendonly.aof,可在redis.conf配置文件中修改。
appendfilename "appendonly.aof" #aof文件名
详细配置参考:Redis进阶知识
持久化触发机制:每一次写、删除操作,都会将操作写入文件。
优点:
- 每次修改都同步,保证了文件的完整性。
缺点:
- 相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢。
- AOF运行效率比RDB慢。