1. 程式人生 > >redis有序集合中是否存在某個成員

redis有序集合中是否存在某個成員

有序集合中,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中有序集合存在的成員情況:
這裡寫圖片描述

程式編譯和執行結果:
這裡寫圖片描述