Hiredis的使用

Hiredis的使用

在这里插入图片描述

📸这里安利一个github仓库介绍 图片生成
Socialify 一键生成专业 GitHub 仓库简介图

一、Hiredis的安装与使用

1、下载hiredis软件包, https://github.com/redis/hiredis.git 或者使用git下载到本地

git clone https://github.com/redis/hiredis.git (已经将源文件下载到了本地,可以直接使用)

2、进行解压与安装,步骤如下

tar -zxvf hiredis.tar.gz
cd hiredis
make
sudo make install

3、更新动态库配置文件
sudo ldconfig

4、头文件与实现文件路径
按照上面步骤安装之后,hiredis的头文件会存在/usr/local/include下面,hiredis的库文件存在/usr/local/lib下面

5、编译方式
g++ xxx.cc -o xxx -I /usr/local/include/hiredis -lhiredis

或者直接g++ xxx.cc -lhiredis需要链接hiredis的库文件

6、后续在代码中引用hiredis的头文件,可以直接使用

#include<hiredis/hiredis.h>

二、Hiredis的重要API

2.1、连接redis数据库

redisContext = redisConnect(const char* ip, int port)
//redisContext不是线程安全的
typedef struct redisContext{
	int err;
	char errstr[128];
	int fd;
	int flags;
	char *buff;
	redisReader = *reader;
}redisContext;

2.2、发送请求命令

第一个参数为连接数据库返回的值,剩余的是可变参数,类似printf。此函数的返回值是void *,但是一般会强制转换为redisReply类型,便于做进一步处理。

void *redisCommand(redisContext *c, const char* format...)

如果命令执行错误,返回值为NULL,redisContext的err字段被设置为非零常量。如果,错误发生,原先的redisContext就不能重复使用,需要重新建立一个新的连接。如果成功执行命令,则标准返回一个redisReply类型,该类型结构如下:

typedef struct redisReply{
	int type;/*测试收到*/
    long long integer;/*type是REDIS-REPLY-INTEGER类型,integer保存返回的值*/
	char* str;/*type是REDIS_REPLY_ERROR和REDIS_REPLY_STRING,str保存返回的值int len;/*保存str类型的长度*/
	size_t elements;/*type是REDIS_REPLY_ARRAY,保存返回多个元素的数量*/
	struct redisReply **element;/*返回多个元素以redisReply对象的形式存放*/
     
}redisReply;
//type还可以是REDIS_REPLY_NIL,表示返回了一个零对象,没有数据可以访问。

通过redisReply结构体中的type变量可以确定命令执行的情况.

#define REDIS_REPLY_STRING 1  //字符串

#define REDIS_REPLY_ARRAY 2  //数组,例如mget返回值
#define REDIS_REPLY_INTEGER 3  //数字类型
#define REDIS_REPLY_NIL 4   //空
#define REDIS_REPLY_STATUS 5  //状态,例如set成功返回的‘OK’
#define REDIS_REPLY_ERROR 6  //执行失败





  • REDIS_REPLY_STATUS:
    返回执行结果为状态的命令。比如set命令的返回值的类型是REDIS_REPLY_STATUS,然后只有当返回信息是"OK"时,才表示该命令执行成功。可以通过reply->str得到文字信息,通过reply->len得到信息长度。

  • REDIS_REPLY_ERROR:
    返回错误。错误信息可以通过reply->str得到文字信息,通过reply->len得到信息长度。

  • REDIS_REPLY_INTEGER:
    返回整型标识。可以通过reply->integer变量得到类型为long long的值。

  • REDIS_REPLY_NIL:
    返回nil对象,说明不存在要访问的数据。

  • REDIS_REPLY_STRING:
    返回字符串标识。可以通过reply->str得到具体值,通过reply->len得到信息长度。

  • REDIS_REPLY_ARRAY:
    返回数据集标识。数据集中元素的数目可以通过reply->elements获得,每个元素是个

  • redisReply对象,
    元素值可以通过reply->element[…index…].*形式获得,用在获取多个数据结果的操作。

2.3、释放资源

释放redisCommand执行后返回的的redisReply所占用的内存。

void freeReplyObject(void *reply)

释放redisConnect()所产生的连接

void redisFree(redisContext *c)

占用的内存。

void freeReplyObject(void *reply)

释放redisConnect()所产生的连接

void redisFree(redisContext *c)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值