基于C# 写一个 Redis 数据同步小工具
概念
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和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配置之后(根据自己要同步数据量的大小设置超时时间),在项目根目录下运行dotnetrun即可,
SampleRun#
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数据同步小工具,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。