有序集合zset中判断value是否存在可以使用zrank

创建了一个Zset (fund.info) ,在对fund.info使用zadd(“thisisatest”)之前,先检查fund.info里面是否已存在value值为"this is a test"的member;

我首先从网上搜索相关的信息,没找到多少消息。

只 找到了 基于JAVA  :http://blog.csdn.net/sparkexpert/article/details/78351558

刚开始我参考他的作法使用zrank进行判断

// 比较strzsetvalue在zset 中的排位,如果>=0,则说明存在

        if (pClient->zrank("fund.info","thisisatest") >= 0)
        {
        }
        else  // 反之则不存在
        {
            pClient->zadd("fund.info",100.00,"thisisatest");
        }

这里出现了一个问题,当我的fund.info不存在“thisisatest”时,zrank()函数会直接报错“unexpected prefix for integer reply”;
这个问题还不清楚原因,有大神帮忙解释下嘛?

下面贴出我的解决办法:

PS:我的解决办法只用来判断fund.info最后一个member和要插入的值是否匹配重复。如果你想与fund.info的全部member匹配重复,可以通过循环来匹配;

bool isRepeatData = false;

// 先判断fund.info是否存在member

    if (pClient->zcard("fund.info") > 0)
    {
        std::vector<std::string>  vSecondDataEx;
        pClient->zrange(strZsetName,-1,-1,vSecondDataEx); // 取最后的member
        if (vSecondDataEx[0] == "thisisatest")   // 用最后的member的value值与要插入的value值比较
        {
            isRepeatData = true;
        }
    }
    if (isRepeatData) // 如果是重复数据则直接返回
    {
        return  ;
    }
    pClient->zadd("fund.info",100.00,"thisisatest");

php 版本不存在的话会直接返回false
所以可以直接判断

    $res = redis()->zRank(Consult::ASK_COMMON_PAY_ZSET, $uid.'_'.$phone);
    if ($res === false) {
        redis()->zAdd(Consult::ASK_COMMON_PAY_ZSET, time() + 86400, $uid.'_'.$phone);
    }

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!

  关于博主【WANG-FEiHU】

Replicate
-----------Complicate
--------------------------Appreciate
----------------------------------------[Fate]
-----------------------------------------------Elevate

三人行 有吾师

-------------花有重开日 梦无止境时-------------

  分类目录

  monitor(TD)

生命要得到丰盛的收获,必需阳光;同时,也需要“雨”的浇灌。

如真 如假 如可分身饰演自己 会将心中的温柔 献出给你唯有的知己

如痴 如醉 还盼你懂珍惜自己 有天即使分离我都想你 我 真的想你

红雨瓢泼泛起了回忆怎么潜

你的选择是做或不做,但不做就永远不会有机会。

爱是有多荒唐 ,恨也能醉人肠。

人生应该树立目标,否则你的精力会白白浪费。

种下一颗树最好的时间是十年前,其次是现在。

你我亦无他 唯手熟尔

只要锦绣山河在,物质名利还复来

https://www.bilibili.com/video/av35928275/?p=391

如若不是为了一个人,谁肯枯守一座城。城市和爱情,总是有着这样那样的关系。我们会因为一个人,去到那座城,因为那是一座爱的城;我们也会因为一个人,离开一座城,那是一座绝望的伤城。