redis migrate 迁移数据

从源Redis实例原子的发送一个key到目标实例。成功后,删除源实例中的key,在目标实例中生成。如果目标实例中已经存在将要发送的键,会报键已存在错误。
命令的格式为:
migrate host port key|"" destination-db timeout keys key1 key2.
具体的例子:
migrate 192.168.1.34 6379 “” 0 5000 KEYS key1 key2 key3
host,目标实例主机名。
port,目标实例端口号
key,要发送的键,可以为空字符串"",此时发送的键有KEYS命令生成。
destination-db,目标数据库
timeout,超时时间。
keys,使用多值模式。

在3.2版以后,migrate命令可以在一次调用时传输多个命令,通过管道技术实现。使用这种模式需要将发送的key设定成"",并且使用Redis 的KEYS命令选择将要发送的键。

migrate命令在内部使用了DUMP命令将键序列化,并且在目标数据库中调用RESTORE。源Redis实例作为目标实例的一个客户端。如果目标实例调用RESTORE成功后,返回OK,则源实例将使用DEL命令删除键。

migrate命令需要进行IO操作,并且遵守超时时间限制。当在发送数据过程中出现IO错误,或者timeout时间到了,这个操作将会中止,并且返回IOERR。此时,可能会出现两种情况:
(1)发送的键出现在两个实例上。
(2)键只存在于源实例上。

当超时发生时,键不可能丢失,但应该对发送的键进行检查,查看键是否已经出现在目标实例中。

如果没有键被发送,则会返回NOKEY。NOKEY不是一个错误。

你可能感兴趣的:(redis,数据库)