在 laravel redis 中设置 ZADD 命令的选项
Set options for ZADD command in laravel redis
我正在尝试使用 laravel redis 为 ZADD 设置选项,但失败了。
我需要设置的选项是NX,如文档中所述:
ZADD options (Redis 3.0.2 or greater)
ZADD supports a list of options, specified after the name of the key and before the first score argument.
所以我是这样写的:
$this->redis->zAdd('orderIDs:' . $category, 'NX',[$orderId => $timestamp[1]]);
我得到的错误信息是
PHP warning: strlen() expects parameter 1 to be string, array given
in /RediMail/vendor/predis/predis/src/Connection/StreamConnection.php
on line 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 似乎没有接受选项,还是我遗漏了什么?
在 Predis 的 zAdd
方法更新以支持 Redis v3.0.2 中的更改之前,您最好的选择是探索 RawCommand
的精彩世界:https://github.com/nrk/predis/blob/master/src/Command/RawCommand.php
它应该可以让您构建自己的命令,包括 ZADD NX ...
变体。
我正在尝试使用 laravel redis 为 ZADD 设置选项,但失败了。
我需要设置的选项是NX,如文档中所述:
ZADD options (Redis 3.0.2 or greater)
ZADD supports a list of options, specified after the name of the key and before the first score argument.
所以我是这样写的:
$this->redis->zAdd('orderIDs:' . $category, 'NX',[$orderId => $timestamp[1]]);
我得到的错误信息是
PHP warning: strlen() expects parameter 1 to be string, array given in /RediMail/vendor/predis/predis/src/Connection/StreamConnection.php on line 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 似乎没有接受选项,还是我遗漏了什么?
在 Predis 的 zAdd
方法更新以支持 Redis v3.0.2 中的更改之前,您最好的选择是探索 RawCommand
的精彩世界:https://github.com/nrk/predis/blob/master/src/Command/RawCommand.php
它应该可以让您构建自己的命令,包括 ZADD NX ...
变体。