标签:redis redisReply res REDIS c++ str 使用 REPLY include
c/c++使用redis
hiredis
hiredis是Redis官方推荐的基于C接口的客户端组件,它提供接口,供c语言调用以操作数据库。
1、安装hiredis
进入Redis的源码包的deps/hiredis
make
make install
ldconfig #使动态库在系统中更新生效
2、接口介绍
#include <hiredis/hiredis.h>
// 该函数用来连接redis数据库,参数为ip地址和端口号,默认端口6379.该函数返回一个redisContext对象
redisContext *redisConnect(const char *ip, int port);
// 该函数执行redis命令,返回redisReply对象
void *redisCommand(redisContext *c, const char *format, ...);
// 释放redisCommand执行后返回的RedisReply对象
void freeReplyObject(void *reply);
// 断开redisConnect所产生的连接
void redisFree(redisContext *c);
//redisReply对象结构如下:
typedef struct redisReply
{
int type; // 返回结果类型
long long integer; // 返回类型为整型的时候的返回值
size_t len; // 字符串的长度
char *str; // 返回错误类型或者字符串类型的字符串
size_t elements; // 返回数组类型时,元素的数量
struct redisReply **element; // 元素结果集合
}redisReply;
// 返回类型有一下几种:
REDIS_REPLY_STRING 1 //字符串
REDIS_REPLY_ARRAY 2 //数组,多个reply,通过element数组以及elements数组大小访问
REDIS_REPLY_INTEGER 3 //整型
REDIS_REPLY_NIL 4 //空,没有数据
REDIS_REPLY_STATUS 5 //状态,str字符串以及len
REDIS_REPLY_ERROR 6 //错误,同STATUS
c程序操作Redis代码
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <hiredis/hiredis.h>
int main()
{
redisContext * rc = redisConnect("127.0.0.1",6379);
assert(rc != NULL);
char* com = "hmset user name jack age 18 sex male height 180";
redisReply* res =(redisReply*)redisCommand(rc,com);
if(res->type == REDIS_REPLY_STATUS)
{
printf("Success %s\n",res->str);
}
else
printf("fail\n");
com = "hgetall user";
res = (redisReply*)redisCommand(rc,com);
if(res->type == REDIS_REPLY_ARRAY)
{
for(int i = 0; i < res->elements; i++)
{
if(i%2 != 0)
printf("%s\n",res->element[i]->str);
else
printf("%s",res->element[i]->str);
}
}
else if(res->type == REDIS_REPLY_STRING)
{
printf("%s",res->str);
}
freeReplyObject(res);
redisFree(rc);
return 1;
}
标签:redis,redisReply,res,REDIS,c++,str,使用,REPLY,include 来源: https://blog.csdn.net/MoriingRain/article/details/115742181
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。