Redis启动后是空的,虽然有一个.rdb文件

Redis is empty after startup, altough there is an .rdb file

在我的redis-cli中运行 "shutdown save"之后,等待"save"命令完成(跟随redis日志)并备份我的redis .rdb文件,我尝试从头启动 redis 服务器,它是用一个空数据库启动的 (dbsize =0!!!)。

我能做什么?如何从 .rdb 文件恢复我的 redis?

我建议检查以下内容:

  1. 在您的配置文件中,检查 dirdbfilename 属性是否反映了您希望找到 .rdb 文件(当然还要验证正确的 .rdb 文件是否位于预期路径)。

  2. 在您的服务器日志中,当启动 Redis 服务时,查看是否看到类似于 DB loaded from disk: x.xxx seconds 的日志消息出现。如果该消息没有出现,或者如果该消息与非常接近 0.000 seconds 的内容一起出现(这可能不是从磁盘加载 11 GB .rdb 文件的合理预期运行时间),那么这可能另一个提示是您的配置没有在正确的位置寻找 .rdb 文件。

问题确实出在我的配置文件中。我将名为 tal.rdb.rdb 文件保存为 old-tal.rdb,因此它不会受到影响。 然后,我再次启动了我的 Redis 服务器,看到它有 0 个键,插入 10000 键和 运行 save" 命令,结果,我看到它创建了一个文件dump.rdb(Redis .rdb files 的默认 dbfilename)在正确的目录路径中,虽然在配置文件中 dbfilenametal.rdb,所以我理解我的配置文件坏了。为了解决这个问题,我用一个备份文件替换了配置文件,并用 tal.rdb 的副本重新启动了我的 Redis,然后它就正确启动了(10M 键)。 谢谢大家!

我遇到了同样的问题。 "Db loaded in 0.000 second " .and Key * 显示空列表。

为了解决这个问题

  1. 创建了 dump.rdb 文件的备份。
  2. 停止服务器。
  3. 从 redis/dump.rdb 中删除了 dump.rdb 文件。
  4. 复制备份到redis文件夹

    sudo cp dump.rdb /etc/redis/dump.rdb

  5. 重启服务器

    127.0.0.1:6379>键 *

有效。

我在服务器迁移中遇到了同样的问题。我在 redis.conf 中检查了 dirdbfilename 指令太多次,但它没有加载密钥。根据我的经验,在服务器迁移中,应该按顺序执行以下步骤:

  1. 在源服务器中转储密钥(使用保存命令)
  2. 在目标服务器中转储密钥
  3. 将目标服务器中的 *.rdb 文件与源服务器中导出的文件交换。
  4. 重置目标中的 redis 服务。

不要忘记第 2 步。

注意:第 3 步将删除目标服务器中的密钥,这些步骤仅用于服务器迁移。

不要忘记检查 redis.conf 中的 dbfilenamedir 指令。