Redis系列四之複製

1、複製基本配置與演示

  爲了不單點故障,Redis提供了複製功能,能夠實現自動同步的過程。redis

  一、配置

  同步後的數據分爲兩類:一類是主數據庫(master),一類是從數據庫(slave)。主數據庫能夠進行讀寫操做,當發生寫操做時自動將數據同步給從數據庫。而從數據通常只讀,並接受主數據庫同步過來的數據。數據庫

  在Redis使用複製功能,只須要在從數據庫的配置文件中加入"salveof 主數據庫IP 主數據庫端口"便可,主數據庫無需進行任何配置。windows

  二、Redis複製演示

  下面咱們在同一臺服務器上啓動兩個Redis實例,監聽不一樣的端口,其中一個做爲主數據庫,另外一個做爲從數據庫。緩存

  首先,咱們要複製一個Redis服務的配置文件,並取名爲redis6380.conf。服務器

  

  咱們修改redis6380.conf配置文件中的端口號爲6380,而且配置改Redis實例爲主數據庫的從數據庫。性能

  

  配置從數據庫命令行

  

  接着,我作了兩個啓動Redis的bat批處理文件,用於啓動兩個Redis數據庫:code

  

  內容分別是:server

 redis-server  redis.windows.conf    //啓動主數據庫
redis-server  redis6380.conf       //啓動從數據庫

  如今咱們啓動主從數據庫的客戶端:blog

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

  

  從數據庫的啓動,咱們打開cmd,進入Redis的目錄,輸入

  

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

  首先,在主數據庫中輸入

  

  而後,在從數據庫的客戶端,咱們進行查詢操做

  

  能夠看到,在從數據庫中獲取的name屬性的值。

  注:除了經過配置文件或命令行設置slaveof參數,還能夠在運行時使用slaveof命令修改:

  

  若是該數據庫已是其餘主數據庫的從數據庫了,slaveof命令會中止和原來的數據庫的同步轉而和新的數據庫進行同步。

2、複製原理

  當一個數據庫啓動後,會向主數據庫發送SYNC命令,主數據庫收到SYNC命令後開始在後臺保存快照,並將保存期間收到的命令緩存起來。當快照完成後,Redis會將快照文件和全部的緩存的命令發送給從數據庫,從數據庫接收到後,會載入快照文件並執行收到的緩存的命令。當主從數據庫斷開重連後會從新執行上述操做。

3、從數據庫持久化

  爲了提升性能,能夠經過複製功能簡歷若干個從數據庫,並在從數據庫中啓用持久化,同時在主數據中禁用持久化。當從數據庫崩潰時重啓後主數據會自動將數據同步過來,因此無需擔憂數據丟失。而當主數據庫崩潰時,須要在從數據庫中使用slaveof no one 命令將從數據庫提高爲主數據繼續服務,並將原來的主數據庫啓動後使用slaveof命令將其設置爲新的主數據庫的從數據庫,便可將新的數據同步過來。

4、參考資料

  一、Redis入門指南(李子驊)

相關文章
相關標籤/搜索