php要操作redis cluster集群需要使用phpredis擴(kuò)展,這是個(gè)c擴(kuò)展,性能更高。
phpredis集群使用 (推薦學(xué)習(xí):PHP視頻教程)
<?php $redis_list = ['10.30.5.162:7000','10.30.5.163:7000','10.30.5.163:7001']; $client = new RedisCluster(NUll,$redis_list); echo $client->get('new_item_key:d89b561fb759fd533a8c2781ef15dd5f')
代碼說(shuō)明
第一個(gè)參數(shù)傳NULL 別問(wèn)我,我也不知道為啥。反正文檔沒(méi)找到,這篇也沒(méi)看懂。
第二個(gè)參數(shù)是我們需要連接的redis cluster的master服務(wù)器列表。我們有3個(gè)master,就填3個(gè), 填一個(gè)主節(jié)點(diǎn)也行, 甚至填一個(gè)從節(jié)點(diǎn)也行, 但是性能有差異。
集群原理
為甚么填入任何一個(gè)節(jié)點(diǎn)地址都可以操作redisCluster呢?
在集群模式下,Redis接收任何鍵相關(guān)命令時(shí)首先計(jì)算鍵對(duì)應(yīng)的槽,
假如初始化的是從節(jié)點(diǎn), 首先會(huì)向從節(jié)點(diǎn)發(fā)送redis命令,
從節(jié)點(diǎn)根據(jù)槽找出所對(duì)應(yīng)的節(jié)點(diǎn),如果節(jié)點(diǎn)是自身,則處理鍵命令;
如果不是自身, 則MOVED重定向錯(cuò)誤,通知客戶(hù)端請(qǐng)求正確的節(jié)點(diǎn)。這個(gè)過(guò)程稱(chēng)為MOVED重定向
重定向信息包含了鍵所對(duì)應(yīng)的槽以及負(fù)責(zé)該槽的節(jié)點(diǎn)地址,根據(jù)這些信息客戶(hù)端就可以向正確的節(jié)點(diǎn)發(fā)起請(qǐng)求phpredis客戶(hù)端可以根據(jù)重定向信息直接再次向鍵所在節(jié)點(diǎn)發(fā)起請(qǐng)求, 從而獲取數(shù)據(jù)