【问题标题】:Redis does not load AOF on startupRedis 启动时不加载 AOF
【发布时间】:2026-01-09 11:20:03
【问题描述】:

我最近将 Redis 配置为使用 AOF 以及 RDB 快照。

但是,AOF 在服务器启动时似乎没有正确重放。

我停止了服务。然后我使用redis-check-aof 确保/var/redis/appendonly.aof 有效。

然后我再次启动服务器。此时,RDB 文件为空。这是我需要研究的另一个问题 - Redis 开始不时丢失所有数据。

在日志文件中我可以看到 AOF 应该被正确加载:

DB loaded from append only file: 1.474 seconds

但是,当我尝试读取我知道应该存在的值时,我什么也得不到:

127.0.0.1:6379> get iQube:Live:wordCount:2015:11:13:10:6
(nil)

但在 AOF 中,有这样的命令:

INCRBY
$36
iQube:Live:wordCount:2015:11:13:10:6
$1
2
*2
$4

我还需要做些什么来完成这项工作吗?

【问题讨论】:

  • 你使用的是什么 Redis 版本? redis.conf 中有 save 命令吗?
  • 我使用的是 3.0.5。在配置中,我有(我相信)默认值:save 900 1save 300 10save 60 10000
  • 服务重启后列出密钥。有吗?
  • 有一些。但是,其中很多都不见了。
  • 尝试一个简单的测试:在重新启动服务之前立即设置一个密钥,然后检查该密钥是否出现。

标签: redis


【解决方案1】:

我的错。我没有正确保护服务器,可能成为most typical attack to Redis 的目标。实际上,AOF 文件包含 flushall 命令,这些命令在加载时会清除数据库。

至少,我建议将这三行放在redis.conf

rename-command CONFIG someverylongandveryunguessablestring
rename-command FLUSHDB ""
rename-command FLUSHALL ""

【讨论】: