Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,同步使用的是釋出/訂閱機制。
按照同步的內容可以分為全量同步和部分同步;
按照同步的時機可以分為初始化同步和實時資料同步;
初始化同步:
初始化同步一般是加掛子節點,做全量同步。
1、slave啟動的時候會向master傳送同步指令SYNC,master接收到並呼叫SYNC的syncCommand函式做同步處理。
2、syncCommand函式會啟動rdbSaveBackground備份程序(如有該程序存在不需建立啟動)做備份操作,備份程序啟動rdbSave函式儲存備份檔案rdb。
3、master節點監控備份程式執行完畢後,會向slave傳送rdb檔案。
實時資料同步:
在一般redis主從模式中,主節點作為寫節點,從節點為讀節點。主節點在接受到使用者寫操作後會透過,透過內部函式向slave節點通知進行資料變更,該資料同步為部分資料同步。
需要說明的是主從複製不會阻塞 master,在同步資料時,master 可以繼續處理 client 請求。同時在主從模式下只有一個主節點,可以有多個slave節點。健康檢查發現主節點不可用的時候會選擇從slave節點中選擇一個升級為master,一般情況下,這種主從透過哨兵模式實現。
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,同步使用的是釋出/訂閱機制。
按照同步的內容可以分為全量同步和部分同步;
按照同步的時機可以分為初始化同步和實時資料同步;
初始化同步:
初始化同步一般是加掛子節點,做全量同步。
1、slave啟動的時候會向master傳送同步指令SYNC,master接收到並呼叫SYNC的syncCommand函式做同步處理。
2、syncCommand函式會啟動rdbSaveBackground備份程序(如有該程序存在不需建立啟動)做備份操作,備份程序啟動rdbSave函式儲存備份檔案rdb。
3、master節點監控備份程式執行完畢後,會向slave傳送rdb檔案。
實時資料同步:
在一般redis主從模式中,主節點作為寫節點,從節點為讀節點。主節點在接受到使用者寫操作後會透過,透過內部函式向slave節點通知進行資料變更,該資料同步為部分資料同步。
需要說明的是主從複製不會阻塞 master,在同步資料時,master 可以繼續處理 client 請求。同時在主從模式下只有一個主節點,可以有多個slave節點。健康檢查發現主節點不可用的時候會選擇從slave節點中選擇一個升級為master,一般情況下,這種主從透過哨兵模式實現。