gpt4 book ai didi

nosql - Redis - 没有办法从禁用 AOF 的环境迁移到启用 AOF 的环境吗?

转载 作者:IT王子 更新时间:2023-10-29 06:04:05 24 4
gpt4 key购买 nike

基本上我的情况是这样的:

1) 我最初在没有 AOF 的情况下启动了 Redis,并让它运行了 n 周。

2) 我决定要使用 AOF,所以我在 n+1 周后重启 Redis 并打开 AOF。

3) 我决定要转移到新服务器。所以我安全地关闭了当前的 Redis 进程,并将 RDB 文件和 AOF 文件复制到我的新服务器上。

4) 当我在启用 AOF 的新服务器中启动 Redis 时,Redis 的默认行为是ONLY 从 AOF 加载数据。 这意味着我前 n 周的数据丢失了。

当然有一个明显的解决方案,即在没有 AOF 的情况下启动 Redis,以便从 RDB 加载数据,然后在运行时打开 AOF。

但这几乎意味着 即使您有一小段时间关闭 AOF,也无法使用 AOF,并且只有从第 1 天开始就一直在使用 AOF,您才能使用 AOF .

这个理解对吗?如果是这样,对于任何想要迁移到支持 AOF 的环境的人来说,这听起来毫无用处。一个没有迁移方式的系统听起来很蹩脚。

我是不是漏掉了什么?有没有办法将您过去的数据包含到您的 AOF 文件中?

我将不胜感激一些帮助,因为这会影响我在我的环境中是否需要 AOF 的决定。 (也就是说我体验不到AOF带来的巨大好处……)

最佳答案

我认为您误解了 AOF 的工作原理。

AOF其实就是两种机制:

  • 重做日志机制,将所有写操作附加到 AOF 文件
  • 后台重写操作,可以从内存内容生成AOF文件

后台重写操作由 Redis 定期触发,但您也可以使用 BGREWRITEAOF命令手动启动它。

现在,当通过“config set appendonly yes”命令动态打开 AOF 时,会自动触发重写操作,因此您可以确定所有现有数据都是生成的 AOF 文件的一部分。

在aof.c文件中可以看到这段代码: https://github.com/antirez/redis/blob/unstable/src/aof.c#L192

在您描述的情况下,您应该将所有数据都放在 AOF 文件中。

关于nosql - Redis - 没有办法从禁用 AOF 的环境迁移到启用 AOF 的环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com