前段時間項目里正好用到了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一樣鏈接操作使用
————————————————
版權聲明:本文為CSDN博主「大金鏈子小手表」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010824676/article/details/81011887