Php 检查Redis列表中是否存在该键,而不检索列表

Php 检查Redis列表中是否存在该键,而不检索列表,php,redis,pipeline,Php,Redis,Pipeline,我正在使用Redis for PHP 我需要检查redis列表中是否存在该键,如果不存在,则添加它。目前,我的代码如下所示: $redis = Redis::connection(); $redis->pipeline(function($pipe) use ($type, $redis) { $list = $pipe->lRange($type.'_unique_list', 0, -1); if(!in_array($this->

我正在使用Redis for PHP

我需要检查redis列表中是否存在该键,如果不存在,则添加它。目前,我的代码如下所示:

$redis = Redis::connection();
$redis->pipeline(function($pipe)  use ($type, $redis)
    {
        $list = $pipe->lRange($type.'_unique_list', 0, -1);
        if(!in_array($this->uid, $list)) {
            $pipe->rPush($type . '_unique_list', $this->uid);
        }
    });
问题在于,取自
$pipe
$list
返回的是Redis对象,而不是数组,并且数组中的
不起作用。但是如果我使用
$redis->lRange
,脚本会变得太慢


所以我的问题是,是否有可能检查Redis列表中是否存在密钥,而不将列表检索到脚本中?一些我在文档中找不到的特殊Redis命令?或者,在这种特殊情况下,我可以用其他东西替换数组中的

错误的回答:你可以打电话,而不是在客户端进行搜索


正确答案:无论是服务器端还是客户端,扫描链表都是一项昂贵的操作(O(N))。如果你的N很大,考虑使用一个不同的数据结构,例如一个集合。

< P>错误的答案:你可以调用而不是在客户端中进行搜索。
正确答案:无论是服务器端还是客户端,扫描链表都是一项昂贵的操作(O(N))。如果你的N很大,考虑使用一个不同的数据结构,例如一个集合,

<代码> $List< /Cord>是对象还是对象数组?具体说明最好显示出
var\u dump($list)的输出
$list
是对象还是对象数组?具体说明最好显示出
var\u dump($list)的输出是的,我已经发现了,并且刚刚开始创建和检查单独的小键。特别是正确的想法,因为我必须每隔一段时间刷新一次这个列表,而密钥可能会自动过期。是的,我已经发现了它,并且刚刚开始创建和检查单独的小密钥。特别是正确的想法,因为我必须每隔一段时间刷新一次这个列表,而密钥可能会自动过期。