redis有序集合中是否存在某個成員
阿新 • • 發佈:2019-02-07
有序集合中,redis沒有命令直接判斷有序集合中是否存在某個成員,自行通過程式碼實現,示例程式碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis.h>
/* -------------------------------------------*/
/**
* @brief 判斷某個成員是否存在
*
* @param c 已建立的連結
* @param key zset表名
* @param member zset成員名
*
* @returns
* 0 不存在
* 1 存在
*/
/* -------------------------------------------*/
int zismember(redisContext *c, char *key, char *member)
{
int ret = 0;
redisReply *reply;
reply = redisCommand(c,"zrange %s 0 -1", key); //執行命令
if (reply->type != REDIS_REPLY_ARRAY) //返回內容狀態型別為陣列
{
goto END;
}
int i;
size_t n = reply->elements; //陣列元素個數
for(i = 0; i < n; ++i)
{
//printf("%d) %s\n", i, reply->element[i]->str);
if(strcmp(member, reply->element[i]->str) == 0)
{
ret = 1 ;
goto END;
}
}
END:
freeReplyObject(reply);//釋放資源
return ret;
}
int main(int argc, char *argv[])
{
redisContext *c;
c = redisConnect("127.0.0.1", 6379); //連線redis伺服器
int ret = zismember(c, "top", argv[1]); //判斷某個成員是否存在, 存在返回1,不存在返回0
if(ret == 1)
{
printf("%s 存在\n", argv[1]);
}
else
{
printf("%s 不存在\n", argv[1]);
}
redisFree(c); //斷開和伺服器的連線
return 0;
}
redis中有序集合存在的成員情況:
程式編譯和執行結果: