爲了不單點故障,Redis提供了複製功能,能夠實現自動同步的過程。redis
同步後的數據分爲兩類:一類是主數據庫(master),一類是從數據庫(slave)。主數據庫能夠進行讀寫操做,當發生寫操做時自動將數據同步給從數據庫。而從數據通常只讀,並接受主數據庫同步過來的數據。數據庫
在Redis使用複製功能,只須要在從數據庫的配置文件中加入"salveof 主數據庫IP 主數據庫端口"便可,主數據庫無需進行任何配置。windows
下面咱們在同一臺服務器上啓動兩個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命令會中止和原來的數據庫的同步轉而和新的數據庫進行同步。
當一個數據庫啓動後,會向主數據庫發送SYNC命令,主數據庫收到SYNC命令後開始在後臺保存快照,並將保存期間收到的命令緩存起來。當快照完成後,Redis會將快照文件和全部的緩存的命令發送給從數據庫,從數據庫接收到後,會載入快照文件並執行收到的緩存的命令。當主從數據庫斷開重連後會從新執行上述操做。
爲了提升性能,能夠經過複製功能簡歷若干個從數據庫,並在從數據庫中啓用持久化,同時在主數據中禁用持久化。當從數據庫崩潰時重啓後主數據會自動將數據同步過來,因此無需擔憂數據丟失。而當主數據庫崩潰時,須要在從數據庫中使用slaveof no one 命令將從數據庫提高爲主數據繼續服務,並將原來的主數據庫啓動後使用slaveof命令將其設置爲新的主數據庫的從數據庫,便可將新的數據同步過來。
一、Redis入門指南(李子驊)