【发布时间】:2015-06-14 20:36:01
【问题描述】:
我正在尝试使用 laravel redis 为 ZADD 设置选项,但失败了。
我需要设置的选项是NX,如文档中所述:
ZADD 选项(Redis 3.0.2 或更高版本)
ZADD 支持选项列表,在键名之后和第一个 score 参数之前指定。
所以我是这样写的:
$this->redis->zAdd('orderIDs:' . $category, 'NX',[$orderId => $timestamp[1]]);
我得到的错误信息是
PHP 警告:strlen() 期望参数 1 是字符串,给定数组 在 /RediMail/vendor/predis/predis/src/Connection/StreamConnection.php 在第 270 行
我也尝试使用 put 'NX' 到其他位置,但 laravel 似乎不喜欢使用 ZADD 选项的想法。
有没有办法用 laravel 做到这一点,还是我需要使用另一种方式来设置我的排序集和选项?
我使用的是 Redis 3.0.2。
来自predis/predis:
class ZSetAdd extends Command
{
/**
* {@inheritdoc}
*/
public function getId()
{
return 'ZADD';
}
/**
* {@inheritdoc}
*/
protected function filterArguments(array $arguments)
{
if (count($arguments) === 2 && is_array($arguments[1])) {
$flattened = array($arguments[0]);
foreach ($arguments[1] as $member => $score) {
$flattened[] = $score;
$flattened[] = $member;
}
return $flattened;
}
return $arguments;
}
}
看起来 predis 不接受选项,还是我遗漏了什么?
【问题讨论】: