Php 在laravel redis中设置ZADD命令的选项

Php 在laravel redis中设置ZADD命令的选项,php,laravel,redis,set,Php,Laravel,Redis,Set,我试图为ZADD和laravel redis设定选项,但失败了 我需要设置的选项是NX,如文档中所述: ZADD选项(Redis 3.0.2或更高版本) ZADD支持一个选项列表,在键名之后和第一个score参数之前指定 所以我这样写: $this->redis->zAdd('orderIDs:' . $category, 'NX',[$orderId => $timestamp[1]]); 我收到的错误消息是 PHP警告:strlen()要求参数1为字符串,数组给定 在/R

我试图为ZADD和laravel redis设定选项,但失败了

我需要设置的选项是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

我也试着把“NX”放到其他位置,但拉威尔似乎不喜欢用选项来代替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
的奇妙世界:

它应该允许您构造自己的命令,包括
zaddnx…
变量