hiredis包装redis数据库操作接口及测试(增删改查与连接)

本文介绍了如何使用hiredis库连接和操作redis数据库,包括增删改查接口的封装,以及实际应用场景的说明,如作为缓存提高查询效率。
摘要由CSDN通过智能技术生成

前两篇文章(redis安装配置与测试redis的数据类型)总计了redis的一些基本知识,这里要进行一下redis的实践,先介绍一个实际应用场景,对于客户频繁需要查询的信息,可以将其放在redis内存数据库中,相当于一个缓存,每次查的时候先去redis内存数据库中去查询,如果查询不到再去oracle数据库中查询,这样提高了效率。

本文,使用redis的C与语操作接口hiredis包装了redis数据库的增删改查以及连接和断开连接接口,可以用在实际应用中。

(一)hiredis介绍

hiredis提供了一linux下访问redis的接口,比如连接和操作redis数据库。这里介绍本文要使用的几个api,其他的可参考官网介绍

redisContext *redisConnect(const char *ip, int port);         /*连接redis*/
void *redisCommand(redisContext *c, const char *format, ...); /*redis数据库操作 如SET GET AUTH等*/
void freeReplyObject(void *reply);                            /*释放redisCommand返回得到的结果结构体*
void redisFree(redisContext *c);                              /*释放连接上下文断开连接*/

hiredis中两种比较重要的结构体定义如下:

typedef struct redisContext 
{
    int err;
    char errstr[128];
    int fd;
    int flags;
    char *obuf;
    redisReader *reader;
} redisContext;
typedef struct redisReply 
{
      int type; 
      long long integer;
      int len;
      char *str; 
      size_t elements; 
      struct redisReply **element; 
} redisReply;

在调用redisConnect连接数据库时候,会返回一个redisContext结构体指针,可以看做是一个连接句柄,redisCommand需要用到该句柄。调用redisCommand返回一个redisReply指针(实际返回的类型是void*,需要显示的转换为redisReply*指针),指向的结构体包含了一些返回信息,如返回类型、返回值和长度等。

(二)hiredis使用

(1)连接redis

调用redisConnect连接redis数据库,得到一个redisContext*指针,如果连接失败,则结构体中的err和errstr被置值。连接成功则err为0。使用示例如下:

        redisContext *c = NULL;

	/*connect*/
	c = redisConnect(ip, port);

(2)操作redis

使用redisCommand,该接口返回一个void*指针,显式转换为redisReply*指针,指向的结构中包含了一些返回信息,比较重要的是返回类型,代表了返回结果的类型。使用示例如下:

     redisReply *reply = NULL;
     reply  = (redisReply *)redisCommand(c, "GET %s", key);

reply->type表明了返回的类型,常见的类型如下:

REDIS_REPLY_STATUS:
返回了命令执行状态,状态信息可以由reply-> str获得。AUTH命令和SET命令正常情况下返回该值, reply-> str为OK。

REDIS_REPLY_ERROR:
表示执行出现了一个错误

REDIS_REPLY_INTEGER: 
返回了一个整数,整数值由eply->integer表示。例如DEL操作,如果key存在,正常情况下返回该类型,表示键的个数。

REDIS_REPLY_NIL:
返回了nil。 表示无相应数据,例如GET不存在的key。

REDIS_REPLY_STRING:
表示命令执行后返回了一个字符串。 返回的字符串使用reply-> str来获取。 这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值