命令:migrate
migrate host port key| destination-db timeout [COPY] [REPLACE] [AUTH password] [AUTH2 username password] [KEYS key]
用于迁移Redis对象
参数:
host: 目标数据库的地址;
port: 目标数据库端口
key: 当前数据库指定要迁移的KEY
destination-db: 目标数据库实例库名
timeout: 超时时间,ms
COPY: 可选参数,默认迁移后,源库中的对象会自动删除;添加COPY参数后会予以保留;
REPLACE: 默认情况下目标KEY 如果存在则报错; 添加后可以覆盖;
AUTH password, 目标库的认证密码;
Redis1
--------
127.0.0.1:6379> smembers zoo //迁移前展示zoo的内容
1) "mouse"
2) "mic"
3) "dog"
4) "cat"
5) "golf"
127.0.0.1:6379> migrate 127.0.0.1 6380 zoo 0 1000 COPY AUTH llj
OK
127.0.0.1:6379> keys zoo //因为带了COPY参数,迁移后zoo依然存在
1) "zoo"
127.0.0.1:6379> migrate 127.0.0.1 6380 zoo 0 1000 COPY AUTH lulijuan
(error) ERR Target instance replied with error: BUSYKEY Target key name already exists.
(0.68s) // 再次迁移后提示目标库中的zoo已经存在
----------
Redis2
-----------
127.0.0.1:6380> exists zoo //迁移前查看zoo不存在
(integer) 0
127.0.0.1:6380> exists zoo //migrate执行后存在了
(integer) 1
127.0.0.1:6380> smembers zoo
1) "dog"
2) "cat"
3) "golf"
4) "mic"
5) "mouse"
127.0.0.1:6380>
-------------
另:
如果要将KEY 在同一个机器的不同库之间迁移,则使用MOVE;
如果要将实例在不同机器之间迁移,则使用备份文件;