KEYS pattern

查找所有符合给定模式 pattern 的 key 。
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开

KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。

MIGRATE host port key destination-db timeout [COPY] [REPLACE]

将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。

这个命令是一个原子操作,它在执行的时候会阻塞进行迁移的两个实例,直到以下任意结果发生:迁移成功,迁移失败,等待超时。

命令的内部实现是这样的:它在当前实例对给定 key 执行 DUMP 命令 ,将它序列化,然后传送到目标实例,目标实例再使用 RESTORE 对数据进行反序列化,并将反序列化所得的数据添加到数据库中;当前实例就像目标实例的客户端那样,只要看到 RESTORE 命令返回 OK ,它就会调用 DEL 删除自己数据库上的 key 。

timeout 参数以毫秒为格式,指定当前实例和目标实例进行沟通的最大间隔时间。这说明操作并不一定要在 timeout 毫秒内完成,只是说数据传送的时间不能超过这个 timeout 数。

MIGRATE 命令需要在给定的时间规定内完成 IO 操作。如果在传送数据时发生 IO 错误,或者达到了超时时间,那么命令会停止执行,并返回一个特殊的错误: IOERR 。
当 IOERR 出现时,有以下两种可能:
key 可能存在于两个实例
key 可能只存在于当前实例
唯一不可能发生的情况就是丢失 key ,因此,如果一个客户端执行 MIGRATE 命令,并且不幸遇上 IOERR 错误,那么这个客户端唯一要做的就是检查自己数据库上的 key 是否已经被正确地删除。

如果有其他错误发生,那么 MIGRATE 保证 key 只会出现在当前实例中。(当然,目标实例的给定数据库上可能有和 key 同名的键,不过这和 MIGRATE 命令没有关系)。
可选项:
COPY :不移除源实例上的 key 。
REPLACE :替换目标实例上已存在的 key 。

先启动两个 Redis 实例,一个使用默认的 6379 端口,一个使用 7777 端口。

$ ./redis-server &
[1] 3557...$ ./redis-server --port 7777 &
[2] 3560


然后用客户端连上 6379 端口的实例,设置一个键,然后将它迁移到 7777 端口的实例上:

$ ./redis-cliredis 127.0.0.1:6379> flushdb
OKredis 127.0.0.1:6379> SET greeting "Hello from 6379 instance"
OKredis 127.0.0.1:6379> MIGRATE 127.0.0.1 7777 greeting 0 1000
OKredis 127.0.0.1:6379> EXISTS greeting                           # 迁移成功后 key 被删除
(integer) 0

使用另一个客户端,查看 7777 端口上的实例:

$ ./redis-cli -p 7777redis 127.0.0.1:7777> GET greeting
"Hello from 6379 instance"

最后需要注意的是,在同一台服务器新建redis实例的时候,新建的redis实例会继承服务期内所有实例的key值,在进行此处测试的时候注意,KEY值重复会报错。所以在新建的实例先flushdb一下
再次新建一个8888端口的实例

127.0.0.1:6379> migrate 127.0.0.1 8888 greeting 0 10
(error) ERR Target instance replied with error: ERR Target key name is busy.
127.0.0.1:6379>

Redis命令之KEYSMIGRATE相关推荐

  1. Redis 命令整理

    Redis 命令整理 一.从大而全的方向看,完整的命令查看文档地址: http://doc.redisfans.com/ 二.Redis 键(key)   常用 案例 三.Redis 字符串(Stri ...

  2. redis命令_Redis 命令执行过程(下)

    点击上方"程序员历小冰",选择"置顶或者星标" 你的关注意义重大! 在上一篇文章中<Redis 命令执行过程(上)>中,我们首先了解 Redis 命 ...

  3. Redis 命令参考

    Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版, 阅读这个文档可以帮助你了解 Redis 命令的具体使用方法, ...

  4. 不到 10 个提升逼格的 Redis 命令

    keys 我把这个命令放在第一位,是因为笔者曾经做过的项目,以及一些朋友的项目,都因为使用keys这个命令,导致出现性能毛刺.这个命令的时间复杂度是O(N),而且redis又是单线程执行,在执行key ...

  5. linux连接redis 命令_在Docker中使用Redis

    1. 简介 本文章将介绍如何使用 Docker 探索 Redis.我们可以在 Docker for Windows .Docker for mac 或者 Linux 模式下运行 Docker 命令. ...

  6. Redis命令参考简体中文版

    Redis命令参考简体中文版 本文是huangz1990对<Redis Command Reference>的简体中文翻译版. 原文:http://redis.readthedocs.or ...

  7. linux 关闭redis 命令_redis----------linux和mac如何安装redis和启动,关闭

    1.打开官网https://redis.io/download.官网有安装命令 2.以下是我的执行过程截图 执行完官网给的命令以后,再执行  make PREFIX=/usr/local/redis ...

  8. Redis命令:SETNX key value(SET if Not eXists)

    起始版本:1.0.0 时间复杂度:O(1) 将key设置值为value,如果key不存在,这种情况下等同SET命令. 当key存在时,什么也不做.SETNX是"SET if Not eXis ...

  9. Lua 脚本内部执行 Redis 命令

    Lua 脚本内部允许通过内置函数执行 Redis 命令: redis.call() redis.pcall() 两者非常相似,区别在于: 若 Redis 命令执行错误,redis.call() 将错误 ...

最新文章

  1. Neo4j-Cypher语言语法
  2. SanFeng-Clound
  3. 为什么你的应用程序需要崩溃
  4. vue组件详解(一)——组件与复用
  5. Spark 报错 DROP TABLE IF EXISTS should not show AnalysisException
  6. 敏捷外包工程系列之一:序言(敏捷外包工程,敏捷开发,CMMI,软件外包,政府项目,银行项目,电信项目)...
  7. 堪比“震网”:罗克韦尔PLC严重漏洞可导致攻击者在系统中植入恶意代码
  8. qt中实现左右分割线_一种快速刷新richedit中内嵌动画的方法的实现
  9. python微软产品一般都一个25位的序列号_Python易错点6
  10. matlab插值函数截断误差,插值及其误差
  11. 深入浅出vuejspdf下载_vue下载pdf
  12. 计算机学院学位证发放仪式,新征程,新梦想--计算机学院举办2019届毕业生学位授予仪式...
  13. 《17.Deep Pyramidal Residual Networks》
  14. 分类刷题:A1008乘电梯
  15. mySql | Error: ER_DATA_TOO_LONG: Data too long for column 'base_info' at row 1
  16. vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!
  17. 关于PTR的说明【转】
  18. 两地三中心是什么意思
  19. Burp Suite使用介绍(四)
  20. 网络安全——黑客攻击的步骤和防范

热门文章

  1. 骨传导耳机哪款性价比高,最具性价比骨传导耳机推荐
  2. 手机经常整晚充电!是对还是错?
  3. 1.5 使用电脑测试MC20的发送英文短信功能
  4. idea主菜单不见了
  5. 数据结构与算法——复杂度
  6. Python中列表常用的操作符
  7. FPGA按键消抖(高级篇)
  8. After Effects动态图形和数据可视化
  9. Nuwa是如何以及为何启动的
  10. 服务器IP绑定自己的域名-腾讯云