Redis的主從架構,能協助我們實現讀多,寫少的情況,下面配置Redis架構,很簡單。
準備環境 vmware + rhel-server-7.0(101,102,103)+redis-3.2.0
1、在192.168.137.101安裝好redis3.2.0,我安裝的目錄如下
redis的安裝參考http://blog.csdn.net/yingxiake/article/details/51469364
2、通過ssh將redis檔案夾copy到102和103的linux上
scp -rf redis/ root@192.168.137.102:/home/redisscp -rf redis/ root@192.168.137.103:/home/redis
102,103的redis目錄如下,說明copy成功
3、配置master和slave關係,有如下倆種方式
a) 在redis.conf中設定slaveof,永久性
slaveof <masterip> <masterport>
b)使用redis-cli用戶端設定redis服務,暫時,redis重啟失效
slaveof <masterip> <masterport>
在102和103的conf/redis.conf的設定檔配置為101的slave關係
master的密碼可以直接在設定檔裡面配置
4、查看設定情況,使用如下命令
info replication
101的主從關係,可以看slaves的串連數還有ip地址,連接埠
102,103的主從關係,可以看master]的ip地址,連接埠
若發現配置沒有問題,但是master_link_status一直是down,connected_slaves一直是0,尋找下,是不是三個ip之間不能拼通,如果能拼通,查看下連接埠是否能拼通,可以在windows上通過telnet
telnet 192.168.137.101 6379
如果發現不能拼通,修改下設定檔,將
bind 127.0.0.1
注釋掉,重啟服務,再試試,參考下http://blog.csdn.net/yingxiake/article/details/51472810
5、測試是否資料同步
在master設定一個key和value
在101和102上分別get資料
說明資料同步成功,接下來把102down掉,再重啟,然後get資料
說明資料恢複成功,另外也說明在主從結構中,slave不能寫資料
主從複製的步驟:
1、從伺服器開始連結主伺服器時,會向主伺服器發送一個 SYNC 命令
2、主服務接收到命令之後,執行 BGSAVE,非同步將寫命令儲存到一個緩衝區裡面
3、主伺服器執行完BGSAVE之後,就.rdb 檔案(BOF的持久化檔案)發送給從伺服器,從伺服器從該檔案恢複資料到記憶體中
4、主伺服器還會以 Redis 命令協議的格式, 將寫命令緩衝區中積累的所有內容都發送給從伺服器,從伺服器通過執行命令將資料恢複到記憶體中