gpt4 book ai didi

从仅附加文件恢复 Redis 数据?

转载 作者:IT王子 更新时间:2023-10-29 06:11:03 26 4
gpt4 key购买 nike

如果我们在 redis.conf 文件中启用 AppendFileOnly,则每个更改 redis 数据库的操作都会记录在该文件中。

现在,假设 Redis 已经使用了在 redis.conf 文件中的“maxmemory”指令中分配给它的所有内存。

为了存储更多数据,它开始通过 redis.conf 文件中指定的任何一种行为(volatile-lru、allkeys-lru 等)删除数据。

假设一些数据从主内存中删除,但它的日志仍然存在于 AppendOnlyFile 中(如果我错了请纠正我)。我们可以使用此 AppendOnlyFile 取回该数据吗?

简单地说,我想问一下,是否有任何方法可以将删除的数据恢复到主内存中?比如我们能否将该数据存储到磁盘内存中,并在需要时将该数据加载到主内存中。

最佳答案

我从谷歌网上论坛得到了这个答案。我正在分享它。

----->

键的逐出记录在 AOF 中作为显式 DEL 命令,所以当文件被重放,完全保持一致性。

AOF 用于在重启后恢复数据集,而不是Redis 用于提供数据服务。如果 key 仍然存在于其中(带有随后的驱逐 DEL),“恢复”它的唯一方法是手动编辑AOF删除相应的删除并重启服务器。

-----> 另一个答案

顾名思义,AOF 是附加到的文件。 Redis不是数据库,遇到删除记录就去查找创建记录。在我看来,这将是工作太多而收获太少。

如前所述,重写 AOF 的配置(请参阅 BGREWRITEAOF 命令作为一个示例)将从 AOF 中删除任何已删除的 key ,现在您无法从 AOF 文件中恢复这些 key 。 AOF 不是恢复已删除 key 的最佳媒介。它旨在作为一种恢复崩溃前数据库的方法 - 没有任何已删除的 key 。

如果您希望能够在删除数据后恢复数据,则需要不同类型的备份。更可能是快照 (RDB) 文件,该文件已使用保存日期/时间进行存档。如果您了解到需要恢复数据,请选择您知道 key 存在时的快照文件,将其加载到单独的 Redis 实例中,然后使用 RESTORE 或 GET 或类似命令检索 key 。如前所述,可以解析 RDB 或 AOF 文件内容以从中提取数据,而无需将文件加载到正在运行的 Redis 实例中。这种方法的缺点是此类工具与 Redis 代码是分开的,并且可能并不总是像 Redis 服务器那样理解文件数据格式的变化。您可以决定哪种方法可以达到您想要的速度和可靠性水平。

关于从仅附加文件恢复 Redis 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138111/

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