一.redis主從複製特點:
1.master(主)可以擁有多個slave(從)
2.多個slave可以串連同一個master外,還可以串連到其他slave
3.主從複製不會阻塞master,在同步資料時,master可以繼續處理client請求
4.提高系統的伸縮性
5.可以在master禁用資料持久化,注釋掉master設定檔中的所有save配置,只需在slave上配置資料持久化
#當有一條Keys資料被改變是,900秒重新整理到disk一次#save 900 1#當有10條Keys資料被改變時,300秒重新整理到disk一次#save 300 10#當有1w條keys資料被改變時,60秒重新整理到disk一次#save 60 10000
二.redis主從複製過程:
當配置好slave後,slave與master建立串連,然後發送sync命令。無論是第一次串連還是重新串連,master都會啟動一個後台進程,將 資料庫快照集儲存到檔案中,同時master主進程會開始收集新的寫命令並緩衝。後台進程完成寫檔案後,master就傳送檔案給slave,slave將 檔案儲存到硬碟上,再載入到記憶體中,接著master就會把緩衝的命令轉寄給slave,後續master將收到的寫命令發送給slave。如果 master同時收到多個slave發來的同步串連命令,master只會啟動一個進程來寫資料庫鏡像,然後發送給所有的slave。
三.配置
Redis的主從複製功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級 伺服器叢集架構。下面我示範下怎樣在多台伺服器上進行Redis資料主從複製。這裡我假設有兩台伺服器,一台是Linux作業系統(區域網路 IP:192.168.3.159),一台是Linux作業系統(區域網路IP:192.168.3.169),在兩個作業系統都安裝 redis,安裝過程參見http://blog.csdn.net/ajun_studio/article/details/6698147有詳細的介紹。
此時我們要到用到linux ,這裡我們採用centOs5.4 ,redis採用redis-2.0.4。
這裡我使用1個master以及1個slave(master在一個Linux下,一個slave在一個Linux下,基本流程是
client -----whrite----->>>【Linux(master 192.168.3159:6379)】<<<--------------------slave----【Linux (slave 192.168.3.169:6381)】<<<<------read---------client
1.在master上修改redis.conf
bind 192.168.3.159
2.在slave上修改起redis.conf
port 6381(服務連接埠號碼要分開)bind 192.168.3.169slaveof 192.168.3.159 6379 (設定master的Host以及Port)
3.啟動服務
首先啟動master
redis-server redis.conf
然後啟動slave
redis-server redis.conf
查看日誌出現
* Connecting to MASTER...[5374] 23 Aug 03:33:20 * Receiving 5479067bytes data dump from MASTER[5374]23 Aug 03:33:21 * MASTER <-> SLAVE sync succeeded
恭喜主從複製成功
下面做個用戶端測試吧
首先串連master添加資料
# ./redis-cli -h 192.168.3.159 -p 6379redis> set name ajunok
接著串連slave取出資料
# ./redis-cli -h 192.168.3.169 -p 6381redis> get name 'ajun'
到此為止 你的Redis主從複製算是圓滿成功了!!!
趕快實驗一下吧!!!