多个rdb文件来自不同的Redis服务器。现在,我想将数据文件合并到单个Redis服务器中。到目前为止,我只找到一个可以通过单个dump.rdb文件恢复的答案。
答案 0 :(得分:2)
最简单的方法是使用DEBUG RELOAD
(未记录的命令)。
DEBUG RELOAD [MERGE] [NOFLUSH] [NOSAVE]
将RDB保存在磁盘上,然后重新加载到内存中。默认情况下它将 保存RDB文件并重新加载。
使用
NOFLUSH
选项,在加载新数据库之前不会删除当前数据库,但是 密钥冲突会导致服务器异常终止。
MERGE
为 使用会冲突的密钥(已加载的RDB文件中的密钥 会赢。)使用
NOSAVE
时,服务器将不保存当前 加载之前RDB文件中的数据集。在以下情况下使用
DEBUG RELOAD NOSAVE
您只想加载放置在Redis中的RDB文件 目录以替换内存中的当前数据集。如果要添加以下内容,请使用
DEBUG RELOAD NOSAVE NOFLUSH MERGE
: 当前RDB文件放置在Redis当前目录中, 当前的内存内容。要验证Redis时使用
DEBUG RELOAD
能够将当前数据集保留在RDB文件中,刷新 内存内容,然后将其加载回。”,
以上内容摘自debug.c
(已应用友好格式)。
因此,如果要确保不同的RDB中没有重复的密钥,请使用DEBUG RELOAD NOSAVE NOFLUSH
。如果您知道有重复项,请使用DEBUG RELOAD NOSAVE NOFLUSH MERGE
,最后加载您要占优的副本。