C++ redis zset 判断特定value是否存在

来源:互联网 发布:数据字典模板 编辑:程序博客网 时间:2024/06/05 04:54

背景说明:

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

原创粉丝点击