目录
问题现象:
问题分析:
方法一-重复执行操作:
方法二-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按钮:
查看同步后的数据:
至此,同步成功!