我使用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