1. 程式人生 > >用 C# 寫一個 Redis 資料同步小工具

用 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://github.com/WeihanLi/SamplesInPractice/tree/master/RedisCopy
  • https://weihanli.github.io/StackExchange.Redis-docs-zh-cn/Configuration.html