导入Redis dump文件提示‘unknown command’失败,该如何解决?
解决Redis dump.rdb导入错误的方法
你用redis-cli -h localhost -p 6379 < dump.rdb导入失败的原因是:dump.rdb是Redis的二进制持久化文件,不能直接通过redis-cli的标准输入当作命令执行,redis-cli会把二进制内容解析成Redis命令,自然会报“未知命令”错误。
以下是两种正确的导入方式:
方式一:离线加载(推荐,稳定可靠)
- 停止本地Redis服务:
- 系统服务管理:
sudo systemctl stop redis - Docker容器:
docker stop <你的Redis容器名/ID>
- 系统服务管理:
- 找到Redis的RDB存储目录:
- 可在Redis运行时执行
redis-cli CONFIG GET dir获取,默认路径比如/var/lib/redis(系统安装)或/data(Docker镜像)
- 可在Redis运行时执行
- 备份原有RDB文件:
- 系统环境:
cp /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak - Docker环境:先把容器内的文件复制出来备份:
docker cp <容器ID>:/data/dump.rdb ./dump.rdb.bak
- 系统环境:
- 替换RDB文件:
- 系统环境:把从服务器获取的
dump.rdb复制到存储目录:cp ./dump.rdb /var/lib/redis/,确保Redis进程对该文件有读写权限 - Docker环境:把本地的
dump.rdb复制到容器内:docker cp ./dump.rdb <容器ID>:/data/
- 系统环境:把从服务器获取的
- 启动Redis服务:
- 系统服务管理:
sudo systemctl start redis - Docker容器:
docker start <你的Redis容器名/ID>
Redis启动后会自动加载目录下的dump.rdb文件
- 系统服务管理:
方式二:在线加载(无需停服务,生产环境谨慎使用)
- 先确认本地Redis数据可覆盖(或提前备份),执行
redis-cli FLUSHDB清空当前数据库(可选) - 执行
redis-cli CONFIG GET dir获取Redis的工作目录,将dump.rdb上传到该目录 - 执行调试命令触发加载:
redis-cli DEBUG RELOAD注意:
DEBUG RELOAD属于调试命令,执行时会阻塞Redis,大文件加载会影响服务可用性,生产环境需谨慎操作
内容的提问来源于stack exchange,提问作者zarathustra
相关产品推荐
相关产品推荐

