我使用phpredis(在25.02.2016從https://github.com/phpredis/phpredis builded)與PHP 5.5.9。使用單個redis實例(版本3.0.7)(遠程和本地redis實例)成功測試該擴展。RedisClusterException與連接到redis集羣時不是本地的phpredis
這是連接到配置的redis集羣的代碼(沒有sentinel,只通過配置)。
$cluster = new \RedisCluster(NULL,
array("192.168.127.203:7000", "192.168.127.203:7001", "192.168.127.203:7002"));
$cluster->setOption(RedisCluster::OPT_SLAVE_FAILOVER, RedisCluster::FAILOVER_ERROR);
var_dump($cluster->_masters());
var_dump($cluster->get('foo1'));
當我們在與redis實例相同的服務器上執行此代碼時,我們成功獲取所有主設備和foo1的值。但是,當我們在另一個網站服務器執行的代碼,我們得到以下的主人從羣集:
array (size=3)
0 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7005
1 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7000
2 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7001
和所獲得的價值將無法與該消息的RedisClusterException「不能與集羣中的任何節點進行通信」 。
我不確定這是否是庫中的錯誤,或者如果我以錯誤的方式使用lib。代碼與文檔中的代碼相同。我認爲一個問題是,我們得到的主機與本地IP而不是遠程IP。
感謝您的幫助。
謝謝你,我正在使用Predis,但遭受同樣的問題! – dwjv