1. 程式人生 > >php操作redis叢集哨兵模式

php操作redis叢集哨兵模式

前段時間專案里正好用到了redis的叢集哨兵部署,因為此前並無瞭解過,所以一臉懵逼啊,查閱了幾篇資料,特此綜合總結一下,作為記錄。

寫在前沿:隨著專案的擴張,對redis的依賴也越來越大,為了增強redis的效能,防止其掛掉,所以第一次嘗試下專案裡引用redis哨兵監控redis叢集。

哨兵模式:粗略看了原理,並無詳細瞭解,如有不對,虛心求教。監聽redis主庫心跳包,如果心跳斷開,則列舉一個從庫推舉成為新的主庫,防止redis宕機不能使用

本方法是通過php-redis擴充套件裡的rawCommand函式完成(必須安裝2.2.7或以上的php-redis擴展才有此函式),如果不瞭解哨兵模式的工作原理,可以先查詢一下,可以更好的幫助理解,在此之前我只是粗略的查了一下,


//初始化redis物件$redis = new Redis();//連線sentinel服務 host為ip,port為埠,哨兵的ip和埠號$redis->connect($host, $port);//獲取主庫列表及其狀態資訊$result = $redis->rawCommand('SENTINEL', 'masters');//根據所配置的主庫redis名稱獲取對應的資訊//master_name應該由運維告知(也可以由上一步的資訊中獲取)$result = $redis->rawCommand('SENTINEL', 'master', $master_name);//根據所配置的主庫redis名稱獲取其對應從庫列表及其資訊$result = redis->rawCommand('SENTINEL', 'slaves', $master_name);//獲取特定名稱的redis主庫地址$result = $redis->rawCommand('SENTINEL', 'get-master-addr-by-name', $master_name)//以上部分可以獲取到主庫的ip和對應埠,程式可以直接像連結單臺redis一樣連結操作使用