Redis键迁移

  在使用Redis的过程中,很多时候我们会遇到需要进行键迁移的问题,需要将指定Redis中的指定数据迁移到其他Redis当中,键迁移有三种方法,我们来进行一一介绍。

一、move

move key db

  move命令由于在Redis内部进行数据迁移,Redis内部可以有多个数据库,彼此在数据上相互隔离,move key db就是把指定的键从源数据库移动到目标数据库当中,但是不建议在生产环境中使用。

二、dump + restore

dump key

restore key ttl value

1.在源Redis上,dump命令会将键值序列化,格式采用RDB格式。

2.在目标Redis上,restore命令将上面序列化的值进行复原,其中ttl参数表示过期时间,ttl=0代表永不过期。

需要注意的是:

一、整个迁移过程并非原子性的,而是通过客户端分部完成的。

二、迁移过程是开启了两个客户端连接,所以dump得结果不是在源Redis和目标Redis之间进行传输。

Redis-source上执行的操作

127.0.0.1:6379> set key1 Federico
OK
127.0.0.1:6379> dump key1
"\x00\bFederico\x06\x00L\x88\xd4\xb3U/Y\xae"

  在Redis-source上设置一个新的键值,将此键值进行序列化。

Redis-target上执行的操作

127.0.0.1:6380> get key1
(nil)
127.0.0.1:6380> restore key1 0 "\x00\bFederico\x06\x00L\x88\xd4\xb3U/Y\xae"
OK
127.0.0.1:6380> get key1
"Federico"

  在Redis-target上查看当前可以不存在后,将序列化后的key进行复原

三、migrate

  migrate用于在Redis实例间进行数据迁移,实际上migrate命令是将dumprestoredel三个命令进行组合,从而简化了操作流程。migrate命令具有原子性,从Redis 3.0.6版本后已经支持迁移多个键的功能。migrate命令的数据传输直接在源Redis和目标Redis上完成,目标Redis完成restore后会发送OK给源Redis。

migrate参数:

  • host:目标Redis的IP地址
  • port:目标Redis的端口
  • key|"":Redis 3.0.6 后如果需要迁移多个键,此处为空字符串""
  • destination-db:目标Redis的数据库索引
  • timeout:迁移的超时时间(单位为毫秒)
  • copy:如果添加此选项后,迁移后不删除源键。
  • replace:如果添加此选项migrate不管目标Redis是否存在该键都会正常迁移进行数据覆盖
  • keys:如果要删除多个建,填写keys key1 key2 key3

Redis-source

127.0.0.1:6379> set key1 Federico
OK
127.0.0.1:6379> set key2 sunshine
OK
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> MIGRATE 127.0.0.1 6380 key1 0 1000
OK
127.0.0.1:6379> keys *
1) "key2"

Redis-target

127.0.0.1:6380> keys *
1) "key1"
127.0.0.1:6380> GET key1
"Federico"

  从源Redis上看到,我们设置了两个键,执行默认参数迁移后只有了一个键。而在目标Redis上已经成功迁移过去了这个键。如果想同时保留源Redis上的数据,可以加上我们上面提到过的参数。

Redis-source

127.0.0.1:6379> keys *
1) "key2"
127.0.0.1:6379> MIGRATE 127.0.0.1 6380 key2 0 1000 copy
OK
127.0.0.1:6379> keys *
1) "key2"

Redis-traget

127.0.0.1:6380> keys *
1) "key1"
2) "key2"
127.0.0.1:6380> get key2
"sunshine"

  这样我们就将Redis键迁移的基本操作进行完了。

move、dump+restore、migrate三个命令的比较

命令 作用域 原子性 支持多个键
move Redis实例内部
dump+restore Redis实例之间
migrate Redis实例之间

Redis键迁移的更多相关文章

  1. Redis系列五:redis键管理和redis数据库管理

    一.redis键管理 1 键重命名 rename oldKey newkey //格式rename oldKey newKey //若oldKey之前存在则被覆盖set name james :set ...

  2. Python进行Redis数据迁移

    Python进行Redis数据迁移 由于开发时的误操作,导致redis数据损坏,所以需要进行redis的数据迁移,网上大佬的教程基本都是需要下载附加工具,亦或是需要一些复杂的操作,个人觉得麻烦还不如写 ...

  3. redis键命令

    1.ping命令用于检测redis是否启动 成功返回pong表示链接成功 2.在远程redis服务上执行命令 Redis-cli -h host -p port -a password 如果是连接本机 ...

  4. Redis 键(key)相关的命令及其它命令的查看地址

    Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME ...

  5. Redis 键(key)

      Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 12 ...

  6. Redis数据迁移方案

    场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...

  7. redis-dump实现redis库迁移

    最近公司有切换redis库的需求,找了个简单的redis迁移方法,不过也有缺点.就是对于实时性要求很高的redis库迁移无法做到数据的实时同步.不过对于简单的redis库备份和迁移还是可以的,各位看官 ...

  8. springboot使用Redis,监听Redis键过期的事件设置与使用代码

    我使用的是Windows下的Redis服务,所以一下Redis设置都是在Windows平台进行. 1.修改Redis配置文件 1.1:Windows下的Redis存在两个配置文件 修改带有servic ...

  9. redis键值操作

    1.1. redis键值操作 1.1.1. keys patten 查询相应的key 可以精确的查,也可以模糊的查 1.1.1.1. 通配符:* ? [] 在redis里,模糊查询key的时候有3个通 ...

随机推荐

  1. cdoj793-A Linear Algebra Problem

    http://acm.uestc.edu.cn/#/problem/show/793 A Linear Algebra Problem Time Limit: 3000/1000MS (Java/Ot ...

  2. 最小重组缓冲区和路径MTU发现

    概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 1. 最小重组缓冲区大小: ipv4为576,ipv6 ...

  3. python之用户登陆作业

    实现一个用户登陆的小程序,如果密码错误,可以重试三次,如果三次均错误,则锁定 数据库如下格式,分别用户名|密码|锁定,其中锁定字段0为正常,1为被锁定 root|admin123|0 admin|ad ...

  4. iOS 多页面跳转同一页面时数据处理

    如果 同一个界面, 会有10个数据源传进来, 此时 创建 一个总模型fullmodel 存储 10个model 数据, 创建 10个一样的cell, 在 不同数据, 用不同cell处理最好, 千万别于 ...

  5. MVC扩展HtmlHelper,加入RadioButtonList、CheckBoxList、DropdownList

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions ...

  6. Golang之redis

    redis是个开源的高性能的key-value的内存数据库,可以把它当成远程的数据结构. 支持的value类型非常多,比如string.list(链表).set(集合). hash表等等 redis性 ...

  7. winXP使用

    1.获得管理员权限 开机启动时按F8-->进入“安全模式”-->选择“Administrator”-->点击登录 2.Windows XP属于单用户多任务操作系统,Linux属于多用 ...

  8. 使用 Php Artisan Tinker 来调试你的 Laravel

    Posted on 2016年6月19日 by ichou 本文翻译自:Tinker with the Data in Your Laravel Apps with Php Artisan Tinke ...

  9. [Groovy] List和Map用法搜集

    http://chenfeng0104.iteye.com/blog/609075 http://www.cnblogs.com/muzi1994/p/5169928.html https://zhi ...

  10. python panda库自动去重

    http://blog.csdn.net/xinxing__8185/article/details/48022401