我們使用redis做緩存來提高系統性能,降低對資料庫的通路,那麼隻使用一個是不夠的,萬一出現故障之後,所有的壓力就會回到資料庫,照成崩盤,是以我們可以使用多個redis來做緩存,并且讀寫分離來提高性能
配置其實十分簡單,隻要啟動所有的redis,配置從機就好了,不用配置主機:
指令: slaveof 主庫ip 主庫端口
注意:在我們設定好主從後,從機将不發進行寫操作 ,會報錯
配置好後,無論配置前主機是否有資料,從機都會有主機的所用資料(通過copy rdb檔案),之後的每個操作發送操作指令;
複制原理:在slave 啟動成功連接配接 到master後會發送一個sync指令,master收到指令後,啟動背景的存盤程序,同時收集所有接收到的用于修改資料集的指令,在背景程序執行完畢之後,而slave服務在接受到資料庫檔案資料後,将其存盤并加載到記憶體中。
在這裡,我們如果主機故障了,我們需要手動的去設定從機,我們總不能讓人一天24小時看着吧,為了解決這個問題,有了哨兵模式;
**哨兵模式:(就是手動設定的改進版,從剩餘的從機中選一個主機),主機回來後,變成slave;
背景監控主機是否故障,在檔案下建立一個sentinel.conf檔案,linux 下指令為touch sentinel.conf,
檔案内容 Sentinel monitor host6379 127.0.0.1 6379 1 解釋:1表示主機挂了後讓slave投票, |
可以存在多個哨兵
哨兵模式監聽原理:
每個哨兵會向其它哨兵(、master、slave定時發送消息ping,以确認對方是否”活”着,如果發現對方在指定時間(可配置)内未回應,則認為死亡,如果多數哨兵都發現某個對象死亡,則使用算法,選出主機
使用指令
Redis-sentinel /sentinal.conf的路徑啟動哨兵模式
缺點:寫操作在master上,主機多或者繁忙的時候有延遲