数据库
首页 > 数据库> > hiredis

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;
}

 

标签:redisReply,REDIS,redis,ply,hiredis,str,REPLY
来源: https://www.cnblogs.com/dzs894330350/p/15869932.html