当我在Redis中执行BGREWRITEAOF时,AOF文件变为空

lrl1mhuk  于 2023-01-16  发布在  Redis
关注(0)|答案(1)|浏览(185)

我有一个Redis示例,其中我启用了快照和AOF。

#snapshot
save 60 5
dbfilename "dump.rdb"
dir "/Ankit/redis_installation/redis-stable"

#aof
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
aof-use-rdb-preamble yes

我启动了Redis示例,并将一些值设置为相同的键,然后执行BGREWRITEAOF,以期望这些多个SET命令会被截断。令我惊讶的是,当我搜索.aof文件时,我看到它是空的。我在一个.rdb文件中有一些数据。(注意,这不是常规快照创建的rdb文件)

[root@kafka1 redis-stable]# ll appendonlydir/
total 8
-rw-r--r--. 1 root root 100 Jan 13 12:56 appendonly.aof.3.base.rdb
-rw-r--r--. 1 root root   0 Jan 13 12:56 appendonly.aof.3.incr.aof
-rw-r--r--. 1 root root  88 Jan 13 12:56 appendonly.aof.manifest

如果看到,则.aof文件大小为0。这2个额外文件(appendonly.aof.3.base.rdbappendonly.aof.manifest)是什么?
在这种情况下,如果我的Redis启动,它将没有一个AOF文件来重放数据,而且它现在有2个RDB文件(下面提到)。

  1. dump.rdb:使用常规快照创建
  2. appendonly.aof.3.base.rdb:我不知道这是为什么创造出来的。
0yg35tkg

0yg35tkg1#

自Redis 7.0开始,它使用多部分AOF格式,包括3种类型的文件:

  • 基文件:自创建(或重写)AOF以来的数据集快照。只有一个基文件。重写AOF文件后,将创建一个新的基文件。它可能是RDB文件或AOF文件。
  • incr文件:创建基本文件后的新命令(AOF文件)。可能有多个incr文件。
  • 清单文件:用于跟踪(基础/增量)文件、订单以及基础文件和增量文件类型的文件。

当我查找. aof文件时,我看到它是空的。我在一个. rdb文件中有一些数据。
因为重写的结果是RDB格式的基文件,即appendonly.aof.3.base.rdb,重写后没有新的命令发送到Redis,所以incr AOF文件,即appendonly.aof.3.incr.aof,是空的。
在这种情况下,如果我的Redis启动,它将没有一个AOF文件来重放数据,而且它现在有2个RDB文件(下面提到)。
不。它有AOF文件(多部分格式,基本文件的格式是RDB)和RDB文件,当你重新启动它时,它将使用AOF文件。

相关问题