redis的 rdb 和 aof 持久化的区别
发布网友
发布时间:2022-04-24 05:43
我来回答
共2个回答
热心网友
时间:2022-04-08 00:47
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覆盖掉。
热心网友
时间:2022-04-08 02:05
当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化好了的文件,整个过程中,主进程是不进行任何IO操作的,确保了极高的性能此时的主进