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

概念

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

  Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得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://github.com/WeihanLi/SamplesInPractice/tree/master/RedisCopy
https://weihanli.github.io/StackExchange.Redis-docs-zh-cn/Configuration.html

总结

以上所述是小编给大家介绍的基于C# 写一个 Redis 数据同步小工具,希望对大家有所帮助!

(0)

相关推荐

  • Redis总结笔记(二):C#连接Redis简单例子

    注:C#在调用Redis是不要使用ServiceStack.Redis驱动的4.0版本,因为这个版本已经商业化了,会出现每小时6000条数据的限制 1.引用驱动 复制代码 代码如下: using ServiceStack.Redis; 2.数据库连接 复制代码 代码如下: RedisClient client;             //连接服务器   6379是redis的默认端口             client = new RedisClient("127.0.0.1",

  • C# Redis学习系列(一)Redis下载安装使用

    下一篇:C# Redis学习系列二:Redis基本设置 一.认识Redis 1. Redis 是一个高性能的key-value数据库. 2. 它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型). 3.周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件 4.别人说的 比我好 Redis百度百科 二.下载 为了匹配我的教程,我推荐下载 redis-2.8.2400 三.如何安

  • C#使用Redis的基本操作

    一,引入dll 1.ServiceStack.Common.dll 2.ServiceStack.Interfaces.dll 3.ServiceStack.Redis.dll 4.ServiceStack.Text.dll 二,修改配置文件 在你的配置文件中加入如下的代码: <appSettings> <add key="RedisPath" value="127.0.0.1:6379"/> todo:这里配置自己redis的ip地址和端口

  • 在c#中使用servicestackredis操作redis的实例代码

    声明一个客户端对象: 复制代码 代码如下: protected RedisClient Redis = new RedisClient("127.0.0.1", 6379);//redis服务IP和端口 一 .基本KEY/VALUE键值对操作: 1. 添加/获取: List<string> storeMembers = new List<string>(); storeMembers.ForEach(x => Redis.AddItemToList(&q

  • C# Redis学习系列(二)Redis基本设置

    上一篇:C# Redis学习系列一:Redis的认识.下载.安装.使用 一.redis 设置密码 使用下载好的 redis-cli.exe 指令: 1.设置密码:config set requirepass 123456 2.查看:info(验证无法通过) 3.授权登陆 auth 123456 二.Redis 更改端口(如从 6379 改到 6820) 1.打开下图:redis.conf 2.将 6379 替代为 6820 保存 3.如何开启?直接打开 redis-server.exe 你会发现

  • C#实现redis读写的方法

    最近做一个C#项目,需要对radis进行读写. 首先引入System.Configuration,如下 实现代码如下: public class ManualSuggestRedisHelper { private static IRedisClient GetManualSuggestClient() { var config = ConfigurationManager.ConnectionStrings["REDIS_MANUAL_VIDEO_LIST"].ConnectionS

  • 基于C# 写一个 Redis 数据同步小工具

    概念 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文

  • 基于PyQt5制作Excel文件数据去重小工具

    需求说明:将单个或者多个Excel文件数据进行去重操作,去重的列可以通过自定义制定. 开始源码说明之前,先说明一下工具的使用过程. 1.准备需要去重的数据文件. 2.使用工具执行去重操作. 3.处理完成后的结果文件. PyQt5 界面UI相关的模块引用 from PyQt5.QtWidgets import * from PyQt5.QtGui import * 核心组件 from PyQt5.QtCore import * 主题样式模块引用 from QCandyUi import Candy

  • 详解使用Python写一个向数据库填充数据的小工具(推荐)

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库查询, 所以验证数据没有别的入口,只能通过在数据库写入数据来进行验证. 二. 工具 Python+mysql 三.前期准备 前置:当然是要先准备好测试方案和测试用例,在准备好这些后才能目标明确将要开发自动化小工具都要有哪些功能,避免走弯路 3.1 跟开发沟通 1)确认数据库连接方式,库名 : 2)测

  • 基于Python写一个番茄钟小工具

    目录 一.功能简述 二.使用到的主要模块 三.核心模块代码分析 1.番茄钟模块 2.音乐控制函数 3.main中的按钮部分 四.整体代码 一.功能简述 番茄钟即番茄工作法,番茄工作法是简单易行的时间管理工具,使用番茄工作法即一个番茄时间共30分钟,25分钟工作,5分钟休息: 特点一:番茄时长有三档 因为这个工具本人也是考虑到每个人情况不一样,不一定25分钟就适合自己,所以将番茄钟时长设为30min/45min/60min三档,自由选择 特点二:番茄统计功能 特点三:休息期间会自动播放放松音乐,当

  • python基于Kivy写一个图形桌面时钟程序

    Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序. 它有如下三个特点: 跨平台 Kivy 编写的程序可在 Linux,Windows,OS X,Android,iOS 和 Raspberry Pi 上运行. 商业友好 Kivy 基于 MIT 许可证进行开源,可以进行免费的商业使用. GPU 加速 Kivy 的图像引擎基于 Open ES 2 构建,性能出众. 除此之外 Kivy 也存在一些缺点,比如: 非原生的图形界面: 打包后的体积很大: 缺乏社区支持: 缺乏足够的示例

  • 使用Python制作一个数据预处理小工具(多种操作一键完成)

    在我们平常使用Python进行数据处理与分析时,在import完一大堆库之后,就是对数据进行预览,查看数据是否出现了缺失值.重复值等异常情况,并进行处理. 本文将结合GUI工具PySimpleGUI,来讲解如何制作一款属于自己的数据预处理小工具,让这个过程也能够自动化!最终效果如下 本文将分为三部分讲解: 制作GUI界面 数据处理讲解 打包与测试 主要涉及将涉及以下模块: PySimpleGUI pandas matplotlib 一.GUI界面制作 思路 老规矩,先讲思路再上代码,首先还是说一

  • 教你用Python写一个水果忍者小游戏

    目录 引言 一.需要导入的包 二.窗口界面设置 三.随机生成水果位置 四.绘制字体 五.玩家生命的提示 六.游戏开始与结束的画面 七.游戏主循环 总结 引言 水果忍者的玩法很简单,尽可能的切开抛出的水果就行. 今天小五就用python简单的模拟一下这个游戏.在这个简单的项目中,我们用鼠标选择水果来切割,同时炸弹也会隐藏在水果中,如果切开了三次炸弹,玩家就会失败. 一.需要导入的包 import pygame, sys import os import random 二.窗口界面设置 # 游戏窗口

  • 教你用Js写一个简单的五子棋小游戏

    目录 棋盘绘制 棋子的绘制 在点击 canvas 的时候获取相对于棋盘数据的坐标点 是否结束 悔棋功能 总结 这里的五子棋只做一些基础的功能,对于相对专业的规则不做处理. 那么该五子棋实现的规则和功能如下: 整体功能采用canvas实现 行列都规定 20 个数量,那么棋子的行列数量是 20 + 1 棋盘数据采用稀疏数组格式 棋子:0 为黑色,1 为白色 可以悔棋 胜负结束判断 棋盘绘制 <template> <div class="gobang"> <ca

  • 基于Python编写一个中秋节嫦娥投食小游戏

    目录 游戏设计 1.游戏背景 2.功能设计 效果展示 代码素材 代码 素材 山河远阔,烟火人间,又一年,千里婵娟~ 今天给大家带来的是给玉兔投喂月饼的小游戏.八月十五中秋夜晚,让我们对着月亮许愿:希望我们在意和在意我们的人,诸邪避退.百事无忌.平安喜乐.万事胜意.提前祝大家中秋节快乐. 中秋节的起源 中秋节起源于上古时代,普及于汉代,定型于唐朝初年,盛行于宋朝以后.中秋节是秋季时令习俗的综合,其所包含的节俗因素,大都有古老的渊源.中秋节以月之圆兆人之团圆,为寄托思念故乡,思念亲人之情,祈盼丰收.

  • 只用40行Python代码就能写出pdf转word小工具

    一.图示 上面为pdf截图内容,下面为转化后的word截图内容 接下来,我们试试自己动作写这个工具吧! 二.前期准备 由于我们采用的是python进行工具编写,并最终需要打包成一个exe文件供我们使用.为了降低包体大小,我们需要先创建一个虚拟环境备用. 另外,pdf转word有现成的第三方库pdf2docx,同时关于gui我们用的是pysimplegui,打包成exe采用的是pyinstaller.在创建虚拟环境后,我们将这些需要用到的第三方库也一一安装吧. # 创建虚拟环境 conda cre

随机推荐