Redis 提供了 RDB 和 AOF 两种持久化方式
RDB:对 Redis 中的数据执行周期性的持久化,即按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件,对应产生的数据文件为dump.rdb。
AOF
:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,因为这个模式是只追加的方式,所以没有任何磁盘寻址的开销,所以很快。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
Redis在重启的时候会默认使用AOF去重新构建数据,因为AOF的数据是比RDB更完整的。
RDB
优点:RDB对Redis的性能影响非常小,是因为在同步数据的时候他只是fork了一个子进程去做持久化的,而且他在数据恢复的时候速度比AOF来的快。
缺点:RDB都是快照文件,都是默认五分钟才会生成一次,这意味着你这次同步到下次同步这中间五分钟的数据都很可能全部丢失掉。
AOF
优点:AOF是一秒一次同步,最多丢一秒数据。因为是只追加的方式写数据,所以不用寻址,性能惊人。AOF的日志是通过一个叫非常可读的方式记录的,适合做数据紧急恢复。采用“重放”机制以恢复到 Redis关闭前的最后时刻。
缺点:一样的数据,AOF文件比RDB还要大。AOF开启后Redis性能低,因为要异步刷新日志。
如何选择:
俩者结合使用,如果真一下丢失了许多数据,第一时间用RDB恢复,再用AOF恢复,因为RDB恢复数据快,但是不全,所以再让AOF来补全。