redis数据库还原未显示任何记录

redis数据库还原未显示任何记录,redis,Redis,希望这是一个简单的问题: 我试图将redis数据库从一台机器(M1)复制到另一台机器(M2)。运行相同版本redis的两台计算机。我是这样做的:- 在M1上,发出“保存”。据我所知,这将为我的数据集创建一个时间点磁盘文件。根据我的配置文件(redis.conf),它会写入一个名为“dump.rdb”的文件 在M2上,我关闭redis并删除该机器上的dump.rdb文件。然后,我将dump.rdb从M1-->M2复制到M2的redis.conf中指定的预期位置,并在M2上重新启动redis实例 在

希望这是一个简单的问题:

我试图将redis数据库从一台机器(M1)复制到另一台机器(M2)。运行相同版本redis的两台计算机。我是这样做的:-

  • 在M1上,发出“保存”。据我所知,这将为我的数据集创建一个时间点磁盘文件。根据我的配置文件(redis.conf),它会写入一个名为“dump.rdb”的文件

  • 在M2上,我关闭redis并删除该机器上的dump.rdb文件。然后,我将dump.rdb从M1-->M2复制到M2的redis.conf中指定的预期位置,并在M2上重新启动redis实例

  • 在M2 redis实例上发出一些“hgetall”查询时,没有记录。在M1上重复相同的步骤可以得到预期的正确结果


    我做错了什么?

    我建议您使用redis备份和恢复

    用法如下:

        $ redis-dump 
        $ redis-dump -u 127.0.0.1:6371 > db_full.json
        $ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json
    
        $ < db_full.json redis-load 
        $ < db_db15.json redis-load -d 15
    

    在更高的层次上,你没有做错任何事情。也许你是无意中犯了一些错误。。。确保文件在复制后具有相同的MD5和。确保第二个Redis配置为使用dump.rdb作为持久性方法,而不是AOF。读取Redis日志以检查它是否读取数据库文件。您是否也使用相同的数据库号?可能您的数据存储在DB5上,但您正在查询DB0?

    我遇到了完全相同的问题。我最终意识到我从中复制dump.rdb的redis实例运行的是2.4.x,而目标redis实例运行的是2.2.x。当2.2.x实例启动时,没有出现无法读取rdb文件的警告。但是
    DBSIZE
    INFO
    键*
    等都表示数据库为空

    一旦我将第二个实例升级到2.4.x,我就能够按预期打开数据库。
    我知道您已经声明您的计算机运行的是相同的版本,但我想在这里添加这一点,以确保其他人知道,如果版本不匹配,他们将看到相同的症状。

    自redis 2.6以来,还有一个MIGRATE语句,您可以使用COPY选项运行该语句:

    我想我应该提到这个特性,因为有时您可能只想复制部分数据


    我不会将其用于完整的数据库转储和加载,前面提到的方法更适合这种情况。

    谢谢-尽管看这个()它似乎是带有适当警告的alpha代码-它有多稳定?原始海报选择了正确的方法,只复制dump.rdb文件,在这种情况下,redis dump虽然对其他东西很酷,但却完全没有用处。我如何检查redis是否配置为使用dump.rdb文件作为持久性方法而不是AOF?
     $ gem install redis-dump