用 C# 寫一個 Redis 數據同步小工具

用 C# 寫一個 Redis 數據同步小工具

Intro

爲了實現 redis 的數據遷移而寫的一個小工具,將一個實例中的 redis 數據同步到另一個實例中。(本來打算找一個已有的工具去作,找了一個 nodejs 的小工具,結果折騰了很久都沒裝上。。。因而就本身寫了這個小工具)html

之因此本身寫一個工具而不是利用 redis 備份機制來實現,主要是由於咱們用的是 redis 雲服務,不能像本身的服務器同樣 SSH 上去一頓操做,要把雲服務的 redis 數據同步到本身服務器上的 redis 實例。node

基本使用

配置解讀

{
  "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.htmlgit

執行遷移

修改 redis 配置以後(根據本身要同步數據量的大小設置超時時間),在項目根目錄下運行 dotnet run 便可,github

Sample Run

More

支持同步/遷移的數據類型:redis

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

實現源碼:https://github.com/WeihanLi/SamplesInPractice/tree/master/RedisCopy數據庫

Reference

相關文章
相關標籤/搜索