测试了predis,通过php代码进行连接redis,并设置了密码后。可以直接获取到数据,
predis 需要引入文件。
解压后把安装包放入同级目录下。
我的php文件是 index.php
且支持秘钥连接。
设置密码的情况下,进行连接
<?php
require __DIR__.'/predis/autoload.php';
Predis\Autoloader::register();
// --------------------可以正确连接到集群的。
// try {
// $parameters = ['tcp://192.168.103.107:7001', 'tcp://192.168.103.107:7002', 'tcp://192.168.103.107:7003'];
// $options = ['cluster' => 'redis'];
// $client = new Predis\Client($parameters, $options);
// echo "Successfully 成功连接到了;;;;;;;";
// $value = $client->get("name");
// var_dump($value);
// }
// catch (Exception $e) {
// echo ",,,,,,没有连接到,,,";
// echo $e->getMessage();
// }
try {
$parameters = ['tcp://192.168.103.107:7001', 'tcp://192.168.103.107:7002', 'tcp://192.168.103.107:7003','tcp://192.168.103.107:7004','tcp://192.168.103.107:7005','tcp://192.168.103.107:7006'];
$options = [
'client' => 'predis',
'parameters' => [
'password' => '123456',
],
];
$client = new Predis\Client($parameters, $options);
echo "Successfully 成功连接到了;;;;;;;数据是:";
$value = $client->get("age");
var_dump($value);
}
catch (Exception $e) {
echo "</br>";
echo "</br>";
echo "</br>";
echo "--------------没有连接到,,,";
}
但是,如代码中只连接了一两个节点,数据却存在其他节点中,在get key时,是获取不到数据的。。
我建立了三主三从7001-7006,代码只连接了7001,7002,7003,我set age 200,被redis算法填在在 7004节点的slot中。
代码中,由于没连接,导致数据获取不到
不设置密码的情况下连接
require __DIR__.'/predis/autoload.php';
Predis\Autoloader::register();
//--------------------可以正确连接到集群的。
try {
$parameters = ['tcp://192.168.103.107:7001', 'tcp://192.168.103.107:7002', 'tcp://192.168.103.107:7003'];
$options = ['cluster' => 'redis'];
$client = new Predis\Client($parameters, $options);
echo "Successfully 成功连接到了;;;;;;;";
$value = $client->get("name");
var_dump($value);
}
catch (Exception $e) {
echo ",,,,,,没有连接到,,,";
echo $e->getMessage();
}