使用Redis Cli迁移Redis库间所有键时出现NOKEY错误如何解决
NOKEY报错原因
- 命令语法不符合MIGRATE的批量迁移规则:Redis的
MIGRATE命令使用KEYS参数时,该关键字仅作为占位符,后面必须跟上至少一个实际要迁移的键名,你执行的命令中KEYS后没有指定任何键,Redis找不到可迁移的对象,就会返回NOKEY。 - 源Redis数据库本身为空:当前连接的源库没有任何键,自然没有可迁移的内容,也会触发该报错。
解决方法
迁移指定多个键
直接在KEYS参数后追加需要迁移的键名即可,示例命令:
MIGRATE 目标主机IP 目标端口 "" 0 5000 AUTH 目标Redis密码 COPY KEYS key1 key2 key3
迁移当前库的所有键
你需要先获取源库的所有键,再拼接进MIGRATE命令执行,全量迁移的示例:
# 测试环境可用,生产环境禁止直接使用KEYS * 避免阻塞实例 redis-cli --raw KEYS '*' | xargs redis-cli MIGRATE 目标主机IP 目标端口 "" 0 5000 AUTH 目标Redis密码 COPY KEYS
生产环境全量迁移建议用
SCAN命令迭代遍历所有键,避免一次性执行KEYS *导致实例阻塞,影响业务正常运行。
其他注意事项
- 不需要保留源库的键时,可以去掉命令中的
COPY参数,迁移完成后源库对应键会自动删除。 - 执行前先确认源实例到目标实例的网络连通正常,目标实例的密码、端口配置正确。
内容的提问来源于stack exchange,提问作者shah64
相关产品推荐
相关产品推荐

