Hiredis_安装_重要API

目录

一 安装HiRedis

二 HiRedis的重要API

2.1 连接redis数据库

2.2 发送请求命令

2.3 释放资源

三 封装一个C++版本的HiRedis

一 安装HiRedis

1.下载hiredis软件包

git clone https://github.com/redis/hiredis.git 

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

cd hiredis
make
sudo make install

3.更新动态库配置文件

sudo ldconfig

4.头文件与实现文件路径

按照上面步骤安装之后,hiredis的头文件会存在/usr/local/include下面,hiredis的库文件存在/usr/local/lib下面

5.编译方式

g++ *.cc -lhiredis

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

#include <hiredis/hiredis.h>

二 HiRedis的重要API

2.1 连接redis数据库

redisContext* redisConnect(const char *ip, int port)
//redisContext不是线程安全的
typedef struct redisContext
{
    int err;  //错误标志,正确连接标志为0,出错时设置为非零常量
    char errstr[128];  //存放错误信息的字符串
    int fd;
    int flags;
    char *obuf;  //write buffer
    redisReader *reader;  //Protocol 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保存返回的值
    int len;  //保存str类型的长度
    char *str;  //type是REDIS_REPLY_ERROR和REDIS_REPLY_STRING,str保存返回值
    size_t elements;
    struct redisReply **element;  //返回多个元素以redisReply对象的形式存放
} redisReply;

通过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)

总结:一共4个API

//进行数据库的连接
redisContext* redisConnect(const char *ip, int port);
    
//对应命令的执行
void* redisCommand(redisContext *c, const char *format...);
    
//两个释放命令
void freeReplyObject(void *reply);

void redisFree(redisContext *c);

三 封装一个C++版本的HiRedis

MyRedis.h

MyRedis.cc

TestRedis.cc

编译运行前Redis数据库:

编译运行:

编译运行后Redis数据库:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值