directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数失败报告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
characters

MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [KEYS key [key ...]]

自2.6.0起可用。

时间复杂度:该命令实际上在源实例中执行 DUMP + DEL,并在目标实例中执行 RESTORE。查看这些命令的页面以了解时间复杂性。此外还执行两个实例之间的O(N)数据传输。

将来自源 Redis 实例的密钥以原子方式传输到目标 Redis 实例。成功时,密钥从原始实例中删除,并保证存在于目标实例中。

该命令是原子性的,并在传输密钥所需的时间内阻塞两个实例,在任何给定时间,密钥似乎都会存在于给定实例中或其他实例中,除非发生超时错误。在3.2和更高版本中,通过传递空字符串(“”)作为键并添加 KEYS 子句,可以在 MIGRATE 的单个调用中对多个键进行流水线处理。

该命令在内部使用 DUMP 生成键值的序列化版本,并使用RESTORE 来合成目标实例中的键。源实例充当目标实例的客户端。如果目标实例向 RESTORE 命令返回 OK,则源实例将使用DEL删除该密钥。

超时指定与目标实例通信的任何时刻的最大空闲时间,以毫秒为单位。这意味着操作不需要在指定的毫秒数内完成,但是传输应该在没有阻塞超过指定的毫秒数的情况下进行。

MIGRATE 需要执行 I / O 操作并遵守指定的超时。当传输过程中发生 I / O 错误或达到超时时,操作中止,并IOERR返回特殊错误。发生这种情况时,以下两种情况是可能的:

  • 密钥可能在两个实例上。

  • 密钥可能只在源实例中。

发生超时时密钥不可能丢失,但如果发生超时错误,客户端调用MIGRATE 应检查密钥是否存在于目标实例中,并相应采取相应措施。

当返回任何其他错误时(从开始ERR) MIGRATE 保证密钥仍然仅存在于初始实例中(除非同名的密钥已经存在于目标实例中)。

如果没有在源实例中迁移的密钥NOKEY返回。因为在正常情况下丢失的密钥是可能的,例如从失效到NOKEY不是错误。

使用一个命令调用迁移多个键

从Redis 3.0.6开始 MIGRATE 支持一种新的批量迁移模式,该模式使用流水线技术来迁移实例间的多个密钥,而不会产生往返时间延迟以及使用单个 MIGRATE 调用移动每个密钥时存在的其他开销。

为了启用此表单,使用了 KEYS 选项,并将常规参数设置为空字符串。实际的键名将在 KEYS 参数本身之后提供,如下例所示:

当使用这种形式NOKEY时,只有在实例中没有任何键时才返回状态码,否则即使只有一个键存在,命令也会执行。

  • COPY  - 不要从本地实例中删除密钥。

  • REPLACE  - 替换远程实例上的现有密钥。

  • keys - 如果键参数是一个空字符串,则该命令将迁移 KEYS 选项后面的所有键(有关详细信息,请参阅上面的部分)。

COPY并且REPLACE仅在3.0及以上版本中可用。KEYS可以从Redis 3.0.6开始使用。

返回值

简单字符串回复:该命令在成功时返回OK,或者NOKEY如果在源实例中未找到任何密钥。

Previous article: Next article: