我做了一个基于Predis、PHP、Redis的后端应用程序。本地开发是用Redis 6.x完成的,效果很好。此代码用于将其他执行代码中的消息记录到远程Redis服务器,工作人员将在那里使用流数据并将其移动到MySQL中进行长期存储。
将代码移到我们的开发服务器中进行测试;ERR语法错误";。经过一番挖掘,我发现dev正在运行Redis 5.x。所以我们升级到Redis 7.x。代码仍然报告相同的错误。我最终更改了代码以使用不同的Redis命令,它在发送时起作用
/**
* return data on the status of streams
*
* @return array
*/
public function findPending() {
// XPENDING hubCurlLog hubCurlLog-group IDLE 9000 - + 1 hubCurlLog-group_1
$command = ['XPENDING', $this->stream_name, $this->stream_group_name, 'IDLE', 9000, '-', '+', 1, $this->consumer_name];
return $this->redis_client->executeRaw($command);
}
上面的函数将产生类似的Redis命令
XPENDING hubCurlLog hubCurlLog-group IDLE 9000 - + 1 hubCurlLog-group_1
这就是我得到ERR语法错误的地方
如果我在cli中运行Redis命令,我仍然会收到同样的错误,但在输入命令时,我确实看到了已知的提示。redis-cli命令提示
我该如何克服这个语法问题?
我发现了一个看起来可以工作的解决方案,我删除了IDLE和时间
来自
XPENDING hubCurlLog hubCurlLog组IDLE 9000-+1 hubCurlLog-group_1
到
XPENDING hubCurlLog hubCurlLog-group_1