zoukankan      html  css  js  c++  java
  • Redis键迁移

    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
    "x00Federicox06x00Lx88xd4xb3U/Yxae"
    

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

    Redis-target上执行的操作

    127.0.0.1:6380> get key1
    (nil)
    127.0.0.1:6380> restore key1 0 "x00Federicox06x00Lx88xd4xb3U/Yxae"
    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实例之间
  • 相关阅读:
    LeetCode(111) Minimum Depth of Binary Tree
    LeetCode(108) Convert Sorted Array to Binary Search Tree
    LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode(99) Recover Binary Search Tree
    【Android】通过经纬度查询城市信息
    【Android】自定义View
    【OpenStack Cinder】Cinder安装时遇到的一些坑
    【积淀】半夜突然有点想法
    【Android】 HttpClient 发送REST请求
  • 原文地址:https://www.cnblogs.com/Cherry-Linux/p/8046276.html
Copyright © 2011-2022 走看看