提问者:小点点

RedisAOF文件是AOF和RDB的混合体吗?


我正在试验Redis并深入研究持久性机制。

如果我打开追加(追加是)和关闭RDB(保存")在redis. conf文件。

然后我启动一个新数据库

并设置两个键:

SETfirstKey我是第一个SET第二个Key我是第二个

我最终得到一个没有任何标题的附录文件,只有命令:

raphaeldelio@Raphaels-MacBook-Pro data % cat appendonly.aof 
*2
$6
SELECT
$1
0
*3
$3
SET
$8
firstKey
$14
I'm number one
*3
$3
SET
$9
secondKey
$14
I'm number two

然后,如果用以下方式覆盖第一个键:

SETfirstKey我仍然是第一名

然后运行BGREWRITEAOF,文件被重写并添加一个类似于dump. rdb文件头的头:

raphaeldelio@Raphaels-MacBook-Pro data % cat appendonly.aof
REDIS0009?  redis-ver6.2.7?
redis-bits?@?ctimežk?bused-mem˜??
                                 aof-preamble???????֭h
                                                     ????mʗ????~??ױ??firstKeyI'm still number one   secondKeyI'm number two??????֭h
                             ????mʗ??????!4d?%    

但是,我希望该文件再次被重写为命令日志。

因此,我有两个问题:

  1. 重写AOF文件后,是否变成AOF和RDB文件的混合?
  2. 如何解码标题的内容?

共2个答案

匿名用户

您指的是一个前序RDB的AOF文件。另请参见此处。

匿名用户

我做了以下实验:

  1. 停止的Redis服务器
  2. appendly. aof重命名为dump.rdb
  3. 编辑redis. conf,关闭appendonly并再次打开保存
  4. 再次启动服务器

服务器能够使用只有标头的dump. rdb来重新创建数据库。

这让我相信:

  1. 是的,AOF文件是AOF和RDB的混合
  2. BGREWRITEAOF实际上并不重写AOF文件,而是获取快照