ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

hiredis

2022-02-08 02:00:45  阅读:178  来源: 互联网

标签:redisReply REDIS redis ply hiredis str REPLY


// 执行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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有