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表示永不过期

需要的是:
1.迁移的整个工程并非原子性的,而是通过客户端部分完成的
2.迁移的过程是开启了两个客户端连接,所以dump的结果不是源redis和目标redis之间进行传输

Redis-source上执行的操作:
因为使用客户端进行传输,所以要先连接客户端,单机和集群的连接方式不一样,多一个-h的参数,具体自行百度

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-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"

migrate

migrate用于在redis实例间进行数据迁移,实际上migrate,命令是将dump.restor,del三个命令进行组合,从而简化了操作流程.
migrate具有原子性,命令传输的数据直接在源redis和目标redis上完成,目标reds完成restore后发送OK给源redis.

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上的数据,可以加上一些参数

一些参数说明:
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> 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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值