(已解决,附RDM工具解决方案)如何实现多个redis连接间指定key(键)的数据同步

目录

问题现象:

问题分析:

方法一-重复执行操作:        

方法二-redis命令实现导出再导入:

方法三-使用rdb文件实现数据迁移

方法四-RDM工具自带的数据复制功能

总结:

解决方法:

方法一-重复执行操作:

方法二-redis命令实现导出再导入、方法三-使用rdb文件实现数据迁移:

方法四-RDM工具自带的数据复制功能


问题现象:

        今天在项目中遇到了一个情况:

       某个旧项目中已经往该项目的redis(A)中录入了一些数据,现在需要对某个新项目的redis(B)中也需要录入这些数据,该如何实现呢?

        这个问题其实可以简单理解为:

        如何实现两个redis连接间指定key(键)的数据同步?

        例如:把redis(A)连接的指定库(db0)中的指定key(haha)同步到另一个redis连接(B)中的指定库(db1)中?


问题分析:

       其实方法有很多种,这里我先简单的收集并列举一下我自己能想到的方法,小伙伴们如果有更好的方法,欢迎补充!!!

方法一-重复执行操作:        

        这应该是最简单的一种方法了:

        找到以前往redis(A)录入数据时执行的操作(如:通过java等集成redis框架的代码set进去、通过redis命令脚本set进去等途径),在redis(B)中也执行一次该操作。

方法二-redis命令实现导出再导入:

        查阅网上资料,发现可以使用redis命令来实现数据的导入导出:

       这种方法我没有完整去测过,因为我在RDM工具中执行了DUMP命令后,没有提示我导出后的文件放在哪里,需要花费一些时间去定位导出的文件,我感觉有些费劲,所以就没再往下研究了,同时也不建议大家使用这种方式,因为我找到了更简单的方法。

方法三-使用rdb文件实现数据迁移

        这种方式也是查阅网上资料的时候看到的,我们知道redis的数据持久化中有一种方式就是使用rdb文件存储数据的,所以这种方式从理论上来说是可行的,但是我感觉有些麻烦,因为要定位到某个key,而不是所有key的话,用这种方式不太方法,所以具体的操作步骤我这里就不列举出来了,有兴趣的小伙伴可以自己去查一下,同时也不建议大家使用这种方式,因为我找到了更简单的方法。

方法四-RDM工具自带的数据复制功能

        或许很多小伙伴是看到这篇文章才知道:原来RDM还有这种功能的么?因为我也是刚刚才自己探索出来的,以前使用RDM工具基本就只是用来连接redis看看数据就完了,偶尔会在console命令窗口执行一些简单的命令(查询数据量达到上k条是就很卡,所以基本不用)。

        

总结:

        优先使用方法一,因为这能最多程度的避免误操作带来不必要的问题,适用于在【以前往redis(A)录入数据时执行的操作(如:通过java等集成redis框架的代码set进去、通过redis命令脚本set进去等途径)】还存在的情况下。

        当方法一派不上用场时,就使用方法四吧,由于此时已经无法找到【以前往redis(A)录入数据时执行的操作】了,所以只能通过数据迁移来往redis(B)中录入数据。


解决方法:

方法一-重复执行操作:

        例如:

//使用hset命令录入一个数据格式为【key:value为键值对】的数据
//key名为【ysc:fw:sch:hahaha】,value中的键为【vakye】,value中的值为【nonono】
hset ysc:fw:sch:hahaha vakye "nonono"

        将redis(A)中执行的上述脚本,在redis(B)中再执行一次,就可实现数据同步。

方法二-redis命令实现导出再导入、方法三-使用rdb文件实现数据迁移:

        略,感兴趣的小伙伴可以自行查阅资料,由于自觉这些方法有点麻烦, 所以这里不做赘述,同时也不建议使用。

方法四-RDM工具自带的数据复制功能

       下面介绍把源redis(sslg-redis)的指定库(db0)的指定key( 所有以ysc:fw:sch:开头的key),同步到目标redis(hro-saas-dev)的指定库(db2)的步骤:

        使用RMD工具,首先找到源redis(sslg-redis)的指定库(db0),点击批量操作按钮:

        此时按钮列表会发生变化,点击从本库复制键到其他库按钮:

        此时会弹出一个窗口,我们要配置好相关的参数设置,参数解析如下:

        【1】:源redis(sslg-redis),相当于上文中提到的redis(A)

        【2】:源redis中的数据库编号(0),redis中的数据库编号:0、1...15

        【3】:源redis中的数据库中的指定key( 所有以ysc:fw:sch:开头的key)

        【4】:设置这些key在同步后的有效期,单位是秒,0表示永久

        【5】:目标redis(hro-saa-dev),相当于上文中提到的redis(B)

        【6】:目标redis中的数据库编号(2)

        【7】:是否替换已存在的key,勾选:同步时,即使key已存在,value也会被替换

        【8】:本次同步的key

        点击复制键按钮:

        点击Yes按钮:

        点击OK按钮:

        查看同步后的数据:

     

        至此,同步成功!

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值