Redis數據複製

Redis數據複製

Redis的複製特性和MySQL類似,都是採用的主從(master、slave)的方式。

Redis複製啓動過程

這裏寫圖片描述

以上爲一個從服務器和一個主服務的情況下的過程。
當多個從服務器嘗試連接一個主服務器的時候,略有不同:
1、假如主服務器BGSAVE尚未執行,多個從服務器就連上主服務器了 :那麼,所有從服務器都會收到相同的快照文件和相同的緩衝區寫命令
2、假如主服務器BGSAVE正在執行或者已經結束完畢,多個從服務器就連上主服務器了 :主服務與新建的從服務器執行以上圖中的所有步驟
redis從服務器可以連接多個從服務器,假如X從服務器擁有從服務器Y,X從服務器正在解析從主服務器發來的呃快照的時候,將斷開於Y從服務器的鏈接,導致Y服務器需要重新同步resync

和MySQL複製的異同

mysql需要配置文件和指令相結合,redis只需要指令或者只需要配置文件

MySQL的主從複製需要先修改配置文件;然後重啓兩臺機器;最後master上建立賬戶並授權slave,slave上做好相關配置,才能實現主從。而Redis設置主從的方式非常簡單,只需在從服務器上執行指令slaveof host port就好。(PS:啓動的時候指定一個包含slaveof host port選項的配置文件也可以),此外,和MySQL有所不同的是:Redis不支持主主複製。

同步數據所使用的數據不同

MySQL是通過binlog文件來同步主從數據的,而Redis則是通過本身持久化方式中的快照(另外一種持久化方式是AOF)來同步主從數據的。而且使用的也是快照本身的BGSAVE持久化指令(另外一個是SAVE指令)

redis從服務器還可以有自己的從服務器

隨着負載的不斷上升,主master服務器可能會無法快速的更新所有從服務器,因爲重連接和重新同步從服務器可能會導致系統超載。於是乎:可以用下圖的方式來緩解:
這裏寫圖片描述

儘管主從服務之間並不一定要想上圖這樣組成一個樹狀結構,但這種樹狀結構對於Redis來講是可行且合理的


參考文獻:redis in action

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章