微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hiredis

// 执行redis命令 void *redisCommand(redisContext *c, const char *format, ...); // redisCommand 函数实际的返回值类型   typedef struct redisReply { /* 命令执行结果的返回类型 */ int type; /* 存储执行结果返回为整数 */ long long integer; /* str变量的字符串值长度 */ size_t len; /* 存储命令执行结果返回是字符串, 或者错误信息 */ char *str; /* 返回结果是数组, 代表数据的大小 */ size_t elements; /* 存储执行结果返回是数组*/ struct redisReply **element; } redisReply; redisReply a[100];   REdis_REPLY_STRING==1 返回值是字符串,字符串储存在redis->str当中,字符串长度为redi REdis_REPLY_ARRAY== 2 返回值是数组,数组大小存在redis->elements里面,数组值存储在 redis->element[i]里面。数组里面存储的是指向redisReply的指针,数 组里面的返回值可以通过redis->element[i]->str来访问,数组的结果 里全是type==REdis_REPLY_STRING的redisReply对象指针。 REdis_REPLY_INTEGER == 3 返回整数long long,从integer字段获取值 REdis_REPLY_NIL==4 返回值为空表示执行结果为空 REdis_REPLY_STATUS ==5 返回命令执行的状态,比如set foo bar 返回的状态为OK,存储在str 当中 reply->str == "OK" 。 REdis_REPLY_ERROR ==6 命令执行错误,错误信息存放在 reply->str当中。

 

// 释放资源 void freeReplyObject(void *reply); void redisFree(redisContext *c);

 

 

#include <stdio.h>
#include <hiredis.h>

int main()
{
// 1. 连接redis服务器
redisContext* c = redisConnect("127.0.0.1", 6379);
if (c->err != 0)
{
return -1;
}
// 2. 执行redis命令
void *prt = redisCommand(c, "hmset user userName zhang3 passwd 123456 age 23 sex man");
redisReply* ply = (redisReply*)prt;
if(ply->type == 5)
{
// 状态输出
printf("状态: %s\n", ply->str);
}
freeReplyObject(ply);

// 3. 从数据库中读数据
prt = redisCommand(c, "hgetall user");
ply = (redisReply*)prt;
if(ply->type == 2)
{
// 遍历
for(int i=0; i<ply->elements; i+=2)
{
printf("key: %s, value: %s\n", ply->element[i]->str, ply->element[i+1]->str);
}
}
freeReplyObject(ply);

redisFree(c);
return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐