用 C# 写一个 Redis 数据同步小工具

用 C# 写一个 Redis 数据同步小工具

Intro

为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中。(原本打算找一个已有的工具去做,找了一个 nodejs 的小工具,结果折腾了好久都没装上。。。于是就自己写了这个小工具)

之所以自己写一个工具而不是利用 redis 备份机制来实现,主要是因为我们用的是 redis 云服务,不能像自己的服务器一样 SSH 上去一顿操作,要把云服务的 redis 数据同步到自己服务器上的 redis 实例。

基本使用

配置解读

{
  "AppSettings": {
    "SyncDatabases": "0,1",
    "BatchSize": 50
  },
  "ConnectionStrings": {
    "Source": "redis1:6379,asyncTimeout=30000,syncTimeout=30000",
    "Dest": "redis2:6379,password=123433,asyncTimeout=30000,syncTimeout=30000"
  }
}
  • AppSettings:SyncDatabases是要同步的 redis 数据库,多个数据库用英文的逗号分隔
  • AppSettings:BatchSize 是每次从源 redis 服务器读取 N 个 key(分页读取,每页 N 个)
  • ConnectionStrings:Source 代表了源 redis 服务器连接字符串
  • ConnectionStrings:Dest 代表了目标 redis 服务器连接字符串

redis 连接字符串详细参数可以参考文档:https://weihanli.github.io/StackExchange.Redis-docs-zh-cn/Configuration.html

执行迁移

修改 redis 配置之后(根据自己要同步数据量的大小设置超时时间),在项目根目录下运行 dotnet run 即可,

Sample Run

More

支持同步/迁移的数据类型:

  • String
  • Hash
  • List
  • Set
  • ZSet(SortedSet)

实现源码:https://github.com/WeihanLi/SamplesInPractice/tree/master/RedisCopy

Reference

原文地址:https://www.cnblogs.com/weihanli/p/12267246.html

时间: 2024-10-25 06:11:09

用 C# 写一个 Redis 数据同步小工具的相关文章

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码. 开源地址: https://github.com/jkpang/PPRows

动态加载页面数据的小工具 javascript + jQuery (持续更新)

使用该控件,可以根据url,参数,加载html记录模板(包含json参数对应,以及具体记录位置Index根据参数描述加载对应的属性,并可以根据简单的判断分支加载对应html或者控件)至列表容器内(JQuery选择器字符串)注: 该控件在使用前需引入JQuery框架支持,使用该控件,可极大的减少Ajax列表数据动态加载开发工作的实际工作量. 使用方式: 首先,添加控件引用,并加入Jquery支持 <script src="js/jquery.js"></script&g

转载:MySQL和Redis 数据同步解决方案整理

from: http://blog.csdn.net/langzi7758521/article/details/52611910 最近在做一个Redis箱格信息数据同步到数据库Mysql的功能. 自己想了想,也有大概方案. 1.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费. 2.后台定时任务,定时刷新Redis中箱格信息到数据库. 网上也到处找了下解决方案,发现这么个问题,居然是天下一大抄,还抄的一字不差,我也抄吧. 方案一: 读: 读redis->没有,读

写一个Redis封装类

打算自己封装一个Redis操作类,方便使用,且有一定log记录.Redis的封装思路:基于Redis类进一步封装 一般属性 单例 (配置参数从配置文件中读取还是写死?考虑多配置之间切换) 常规操作根据业务单独处理.(注意健壮性和容错) 目的不同,可能做的封装也同.我们要基于业务做一些抽象程度较低的封装,也会根据需要,做一些tool级别的高抽象的封装.如果抽象的足够高,可以让通用性变得更好.这次封装Redis,我先做一个通用性的Redis操作类,先仅作最基本的一些操作. 代码如下: <?php /

Redis相关的小工具:redis-load、redis-stat

redis-load.redis-stat是Redis作者antirez写的两个小工具,其中: redis-load是Redis的一个压力测试工具 redis-stat是Redis的状态监控工具 相关代码见:https://github.com/antirez/redis-tools 1 下载代码 $ git clone https://github.com/antirez/redis-tools.git 2 编译 $ cd redis-tools $ make all 3 redis-load

linux数据同步备份工具之rsync

一.rsync基本配置及介绍 1.什么是rsync?      rsync(rsync  -  a  fast,  versatile(通用的), remote (and local) file-copying tool  )一款开源的,快速的,多功能可实现全量及增量的本地或者远程数据同步备份的优秀工具可适用于多个操作系统之上.rsync具有可以使本地和远程两台主机之间的数据快速的同步和备份的用能.2.rsync的特性  1)支持拷贝特殊文件如连接文件设备等  2)可以有排除指定文件或目录同步的

MySQL数据库同步小工具(Java实现)

近期公司做个报表系统,为了报表系统中复杂的查询条件,不影响线上业务系统的使用,研究了一下MySQL数据库同步,下面用Java代码实现MySQL数据库同步,以便自己查阅! ? 数据库同步实现功能点: 1.支持跨服务器跨库的多线程同步 2.每张表的同步有日志记录 3.每次同步记录数可配置 源码和具体的使用细则,可以到下载源码及使用说明?. ? 一.数据同步核心代码 ? ? ? 二.数据库同步多线程实现 ? ? ? ? 三.配置文件及读取配置文件代码 配置文件内容为: 读取配置文件的Java类为: ?

闲来无事,编写一个数据迁移小工具

一.前言 生命不息,折腾不止.近期公司有数据迁移的计划,从Sqlserver迁移到mysql,虽说网上有很多数据迁移方案,但闲着也是闲着,就自己整一个,权当做是练练手了 二.解决思路 整个迁移过程类似于ETL,将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端.读取并转换sqlserver库数据,将数据解析为csv文件,载入文件到mysql.流程如下: 抽取.转换此过程主要是处理源数据库与目标数据库表字段的映射关系,为了保证程序的通用性,通过配置文件映

利用多线程写一个摇奖机小程序

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading; 9 using System.Threading.Tasks; 10 using System.Window