redis的 rdb 和 aof 持久化的区别

Redis中的数据是存储在计算机内存中的,如果我们不进行配置,就会出现重启Redis后数据丢失的情况,这里就需要Redis中的持久化技术,它是将数据存储到磁盘中的,当Redis重启后仍可以从磁盘中获取数据,从而达到持久化的效果。

RDB和AOF有什么区别呢?

RDB持久化是在指定的时间间隔内,将内存中的数据集快照写入磁盘,实际操作过程是有一个fork子进程,先将数据集写入临时文件中,写入成功后再替换之前的文件,用二进制压缩存储。

而AOF持久化是以日志的形式记录在服务器所处理的每一个写、删操作,查询操作不会被记录,以文本的方式记录,可以打开文件看到详细的操作记录。

RDB的优点在于它的速度比较快,而且存储的是一个二进制文件,传输起来较方便;而缺点是RDB无法保证数据的绝对安全,有时候就是1秒也会造成很大的数据丢失。

AOF的优点在于比RDB更安全,一般不会出现数据丢失的现象,就算出现了数量也不会太大,当然了,官方是推荐同时开启AOF和RDB的;而缺点是AOF持久化的速度相比RDB要慢,存储的是一个文本文件,到了后期文件会比较大,传输困难。

需要注意的是,在重启Redis之后,需要加载一个持久化文件,有限会选择AOF文件,如果先开启了RDB再开启AOF,RDB先执行了持久化,那RDB文件中的内容会被AOF覆盖掉。