1. 程式人生 > >Redis系列之複製(四)

Redis系列之複製(四)

一、複製基本配置與演示

  為了避免單點故障,Redis提供了複製功能,可以實現自動同步的過程。

  1、配置

  同步後的資料分為兩類:一類是主資料庫(master),一類是從資料庫(slave)。主資料庫可以進行讀寫操作,當發生寫操作時自動將資料同步給從資料庫。而從資料一般只讀,並接受主資料庫同步過來的資料。

  在Redis使用複製功能,只需要在從資料庫的配置檔案中加入"salveof 主資料庫IP 主資料庫埠"即可,主資料庫無需進行任何配置。

  2、Redis複製演示

  下面我們在同一臺伺服器上啟動兩個Redis例項,監聽不同的埠,其中一個作為主資料庫,另一個作為從資料庫。

  首先,我們要複製一個Redis服務的配置檔案,並取名為redis6380.conf。

  

  我們修改redis6380.conf配置檔案中的埠號為6380,並且配置改Redis例項為主資料庫的從資料庫。

  

  配置從資料庫

  

  接著,我做了兩個啟動Redis的bat批處理檔案,用於啟動兩個Redis資料庫:

  

  內容分別是:

 redis-server  redis.windows.conf    //啟動主資料庫
redis-server  redis6380.conf       //啟動從資料庫

  現在我們啟動主從資料庫的客戶端:

  主資料庫的客戶端就在Redis的安裝目錄下,雙擊redis-cli.exe即可。

  

  從資料庫的啟動,我們開啟cmd,進入Redis的目錄,輸入

  

  這樣,我們就有了兩個Redis資料庫服務端和客戶端,下面就來演示覆制的功能:

  首先,在主資料庫中輸入

  

  然後,在從資料庫的客戶端,我們進行查詢操作

  

  可以看到,在從資料庫中獲取的name屬性的值。

  注:除了通過配置檔案或命令列設定slaveof引數,還可以在執行時使用slaveof命令修改:

  

  如果該資料庫已經是其他主資料庫的從資料庫了,slaveof命令會停止和原來的資料庫的同步轉而和新的資料庫進行同步。

回到頂部

二、複製原理

  當一個數據庫啟動後,會向主資料庫傳送SYNC命令,主資料庫收到SYNC命令後開始在後臺儲存快照,並將儲存期間收到的命令快取起來。當快照完成後,Redis會將快照檔案和所有的快取的命令傳送給從資料庫,從資料庫接收到後,會載入快照檔案並執行收到的快取的命令。當主從資料庫斷開重連後會重新執行上述操作。

回到頂部

三、從資料庫持久化

  為了提高效能,可以通過複製功能簡歷若干個從資料庫,並在從資料庫中啟用持久化,同時在主資料中禁用持久化。當從資料庫崩潰時重啟後主資料會自動將資料同步過來,所以無需擔心資料丟失。而當主資料庫崩潰時,需要在從資料庫中使用slaveof no one 命令將從資料庫提升為主資料繼續服務,並將原來的主資料庫啟動後使用slaveof命令將其設定為新的主資料庫的從資料庫,即可將新的資料同步過來。