Я использую phpredis (построен 25.02.2016 с сайта https://github.com/phpredis/phpredis. ) с php 5.5.9. Расширение успешно протестировано с одним экземпляром Redis (версия 3.0.7) (удаленный и локальный экземпляр Redis).
Это код для подключения к настроенному кластеру Redis (без дозорного, только через конфиги).
$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 с сообщением «Не удается связаться ни с одним узлом в кластере».
Я не уверен, ошибка ли это в библиотеке или я неправильно использую библиотеку. код такой же, как в документации. Я думаю, что одна проблема заключается в том, что мы получаем мастеров с локальным IP-адресом, а не с удаленным IP-адресом.
ценю всю вашу помощь.