首页 > 解决方案 > Redis AOF 重写文件和 RDB 一样吗?

问题描述

我发现如果在 AOF 重写和 RDB 保存后没有执行新的写入操作。生成的 AOF 文件与 RDB 文件相同。那是对的吗?

而redis为什么会选择迭代数据库的方式来重写AOF呢?这意味着程序每次开始 AOF 重写时都应该迭代数据库。上次的 AOF 重写对当前的 AOF 重写没有帮助。当数据库很大时,这种重写可能会花费太多时间。

在我看来,真正重写 AOF 文件可能会更好。从上次 AOF-rewrite 的结束位置开始,重写后面的 AOF 步骤。我知道这样做可能会在重新构建 redis 数据库时失去一些性能。这种方式还有其他问题吗?

标签: redis

解决方案


我发现如果在 AOF 重写和 RDB 保存后没有执行新的写入操作。生成的 AOF 文件与 RDB 文件相同。那是对的吗?

是的

从上次AOF-rewrite的结束位置开始,重写以下AOF步骤

假设用户SET在第一次 AOF 重写之前调用 100 万条命令来设置 100 万个键。然后用户在第二次 AOF 重写之前调用 100 万DEL条命令来删除这些键。如果你从上次 AOF 重写的末尾开始,你的 AOF 文件将包含 200 万条无用的记录。此外,您的 AOF 会越来越大,直到磁盘已满,重新加载这么大的 AOF 文件会很慢。


推荐阅读