目录搜索
Clustercluster addslots(集群 槽位)cluster count failure reports(集群计数失败报告)cluster countkeysinslotcluster delslotscluster failovercluster forgetcluster getkeysinslotcluster infocluster keyslot(集群键槽)cluster meetcluster nodes(集群节点)cluster replicate(集群复制)cluster reset(集群重置)cluster saveconfigcluster set config epochcluster setslotcluster slavescluster slotsreadonlyreadwriteConnectionauthechopingquitselectswapdbGeogeoaddgeodistgeohashgeoposgeoradiusgeoradiusbymemberHasheshdelhexistshgethgetallhincrbyhincrbyfloathkeyshlenhmgethmsethscanhsethsetnxhstrlenhvalsHyperLogLogpfaddpfcountpfmergeKeysdeldumpexistsexpireexpireatkeysmigratemoveobjectpersistpexpirepexpireatpttlrandomkeyrenamerenamenxrestorescansorttouchttltypeunlinkwaitListsblpopbrpopbrpoplpushlindexlinsertllenlpoplpushlpushxlrangelremlsetltrimrpoprpoplpushrpushrpushxPub/SubpsubscribepublishpubsubpunsubscribesubscribeunsubscribeScriptingevalevalshascript debugscript existsscript flushscript killscript loadServerbgrewriteaofbgsaveclient getnameclient killclient listclient pauseclient replyclient setnamecommandcommand countcommand getkeyscommand infoconfig getconfig resetstatconfig rewriteconfig setdbsizedebug objectdebug segfaultflushallflushdbinfolastsavemonitorrolesaveshutdownslaveofslowlogtimeSetssaddscardsdiffsdiffstoresintersinterstoresismembersmemberssmovespopsrandmembersremsscansunionsunionstoreSorted SetszaddzcardzcountzincrbyzinterstorezlexcountzrangezrangebylexzrangebyscorezrankzremzremrangebylexzremrangebyrankzremrangebyscorezrevrangezrevrangebylexzrevrangebyscorezrevrankzscanzscorezunionstoreStringsappendbitcountbitfieldbitopbitposdecrdecrbygetgetbitgetrangegetsetincrincrbyincrbyfloatmgetmsetmsetnxpsetexsetsetbitsetexsetnxsetrangestrlenTransactionsdiscardexecmultiunwatchwatch
文字

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如果在源实例中未找到任何密钥。

上一篇:下一篇: