基于C# 寫一個 Redis 數(shù)據(jù)同步小工具
概念
Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。
Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。這使得Redis可執(zhí)行單層樹復(fù)制。存盤可以有意無意的對數(shù)據(jù)進(jìn)行寫操作。
Intro#
為了實現(xiàn) redis 的數(shù)據(jù)遷移而寫的一個小工具,將一個實例中的 redis 數(shù)據(jù)同步到另外一個實例中。(原本打算找一個已有的工具去做,找了一個 nodejs 的小工具,結(jié)果折騰了好久都沒裝上。。。于是就自己寫了這個小工具)
之所以自己寫一個工具而不是利用 redis 備份機制來實現(xiàn),主要是因為我們用的是 redis 云服務(wù),不能像自己的服務(wù)器一樣 SSH 上去一頓操作,要把云服務(wù)的 redis 數(shù)據(jù)同步到自己服務(wù)器上的 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 數(shù)據(jù)庫,多個數(shù)據(jù)庫用英文的逗號分隔
- AppSettings:BatchSize 是每次從源 redis 服務(wù)器讀取 N 個 key(分頁讀取,每頁 N 個)
- ConnectionStrings:Source 代表了源 redis 服務(wù)器連接字符串
- ConnectionStrings:Dest 代表了目標(biāo) redis 服務(wù)器連接字符串
redis 連接字符串詳細(xì)參數(shù)可以參考文檔:https://weihanli.github.io/StackExchange.Redis-docs-zh-cn/Configuration.html
執(zhí)行遷移#
修改 redis 配置之后(根據(jù)自己要同步數(shù)據(jù)量的大小設(shè)置超時時間),在項目根目錄下運行 dotnet run 即可,
Sample Run#
More#
支持同步/遷移的數(shù)據(jù)類型:
- String
- Hash
- List
- Set
- ZSet(SortedSet)
實現(xiàn)源碼: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
總結(jié)
以上所述是小編給大家介紹的基于C# 寫一個 Redis 數(shù)據(jù)同步小工具,希望對大家有所幫助!
相關(guān)文章
C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)
這篇文章主要介紹了C# 使用Microsoft Edge WebView2的相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02c#使用nsoup解析html亂碼解決方法分享 nsoup教程
NSoup是JSoup的Net移植版本。使用方法基本一致。如果項目涉及HTML的處理,強烈推薦NSoup。但是遺憾的是NSoup默認(rèn)的編碼是UTF-8,處理中文有亂碼,下面給出二種解決方法2014-01-01