phpredis:错误:未知命令

问题描述

我通过pecl将PHPredis安装到了我的docker容器(与PHP-7.4.1-apache-buster一起运行):

RUN pecl install -f redis-5.3.1 && docker-PHP-ext-enable redis

我已连接到Redis服务器,但是对于所有命令,我都会得到: ERR:未知命令

$redis->select(1);

$redis->getLastError();

$redis->set('test','test');

$redis->getLastError();

$redis->get('test');

$redis->getLastError();

getLastError()返回的位置:

'ERR未知命令'SELECT'。'''

'ERR未知命令'SET'。'''

'ERR未知命令'GET'。'''

错误消息似乎包含一些错误编码的字符,这可能是导致问题的原因。

我已经尝试安装不同的版本:5.3.1和5.2.0,但是结果是相同的。

解决方法

已解决:

我们的Redis处于前哨模式:

$redis->info();
//"redis_mode": "sentinel",

这意味着我首先需要与RedisSentinel连接,然后获取主服务器地址,然后按如下所示连接到该主服务器:

// connect to sentinel
$sentinel = new RedisSentinel('ip','port',10);

// get the master ip and port you want to use
$address = $sentinel->getMasterAddrByName('your-master-name');

$redis = new Redis();
// connect to that master
$redis->pconnect($address[0],$address[1],10);

// select the db
$redis->select(1);

// ready