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

来源:https://www.cnblogs.com/weihanli/archive/2020/02/05/12267246.html
-Advertisement-
Play Games

用 C 寫一個 Redis 數據同步小工具 Intro 為了實現 redis 的數據遷移而寫的一個小工具,將一個實例中的 redis 數據同步到另外一個實例中。(原本打算找一個已有的工具去做,找了一個 nodejs 的小工具,結果折騰了好久都沒裝上。。。於是就自己寫了這個小工具) 之所以自己寫一個工 ...


用 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 官方文檔 猛戳這裡 在settings中配置以下代碼 #LOGGING_DIR 日誌文件存放目錄 LOGGING_DIR = "logs" # 日誌存放路徑 if not os.path.exists(LOGGING_DIR): os.mkdir(LOGGING_DIR) import loggin ...
  • 伴隨著移動互聯網的飛速發展,越來越多用戶被互聯網連接在一起,用戶所積累下來的數據越來越多,市場對數據方面人才的需求也越來越大,由此也帶火瞭如數據分析、數據挖掘、演算法等職業,而作為其中入門門檻相對較低、工資高於大多傳統行業崗位的數據分析一職,則成為了許多想轉行進入數據領域的同學的首要選擇。 那麼在現在 ...
  • A類調用B類的靜態方法,除了載入B類,但是B類的一個未被調用的方法間接使用到的C類卻也被載入了,這個有意思的場景來自一個提問: "方法中使用的類型為何在未調用時嘗試載入?" 。 場景如下: 添加JVM varbose參數進行執行,輸出是: main方法執行 ,而 方法裡面只有列印語句,所以理論上應該 ...
  • 要分析JVM的源碼,結合資料直接閱讀是一種方式,但是遇到一些想不通的場景,必須要結合調試,查看執行路徑以及參數具體的值,才能搞得明白。所以我們先來把JVM的源碼進行編譯,並能夠使用GDB進行調試。 編譯環境 本文使用的JDK版本:OpenJDK7,分支b147 下載頁面:https://downlo ...
  • numpy庫中矩陣的常用方法 1 矩陣轉置 從上圖可以看出:使用方法a.T可以將矩陣a轉置。 2 均值與方差 註意:方法a.mean()會對矩陣a的所有元素求均值,a.var()也是考慮矩陣a的所有元素求方差。 當然,也可以選取矩陣的某一行或某一列使用mean與var求均值與方差。 3 設置零矩陣 ...
  • java中棧記憶體與堆記憶體(JVM記憶體模型) Java中堆記憶體和棧記憶體詳解1 和 Java中堆記憶體和棧記憶體詳解2 都粗略講解了棧記憶體和堆記憶體的區別,以及代碼中哪些變數存儲在堆中、哪些存儲在棧中。記憶體中的堆和棧到底是什麼 詳細講述了程式在記憶體中的模型,從可執行文件(ELF)格式的編譯介紹了堆和棧,主要是... ...
  • 文件下載 1.開啟fileinfo擴展 2.fileinfo函數 finfo_open 創建一個fileinfo資源 finfo_close 關閉fileinfo資源 finfo_file 返回一個文件的信息 FILEINFO_MIME_TYPE 返回mime類型 FILEINFO_MIME_TYP ...
  • 平衡二叉樹(AVL樹)的自平衡(LL->R、RR->L、LR->LR、RL->RL)、增、刪 等操作。 main.cpp: #include <iostream> #include "AVLTree.h" using namespace std; int main() { AVLTree<int> ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...