php要操作redis cluster集群需要使用phpredis擴展,這是個c擴展,性能更高。
phpredis集群使用 (推薦學習: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')
代碼說明
第一個參數(shù)傳NULL 別問我,我也不知道為啥。反正文檔沒找到,這篇也沒看懂。
第二個參數(shù)是我們需要連接的redis cluster的master服務器列表。我們有3個master,就填3個, 填一個主節(jié)點也行, 甚至填一個從節(jié)點也行, 但是性能有差異。
集群原理
為甚么填入任何一個節(jié)點地址都可以操作redisCluster呢?
在集群模式下,Redis接收任何鍵相關命令時首先計算鍵對應的槽,
假如初始化的是從節(jié)點, 首先會向從節(jié)點發(fā)送redis命令,
從節(jié)點根據(jù)槽找出所對應的節(jié)點,如果節(jié)點是自身,則處理鍵命令;
如果不是自身, 則MOVED重定向錯誤,通知客戶端請求正確的節(jié)點。這個過程稱為MOVED重定向
重定向信息包含了鍵所對應的槽以及負責該槽的節(jié)點地址,根據(jù)這些信息客戶端就可以向正確的節(jié)點發(fā)起請求phpredis客戶端可以根據(jù)重定向信息直接再次向鍵所在節(jié)點發(fā)起請求, 從而獲取數(shù)據(jù)