hiRedis Synchronous API

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


from: http://blog.csdn.net/pla1988/article/details/8510721


hiRedis操作同步API的接口函数只需下面三个即可:

redisContext*redisConnect(const char *ip, int port);

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

voidfreeReplyObject(void *reply);

1. 连接(Connecting)

redisconnect函数创建一个redisContext类型的数据结构,用于保存与服务器端的连接状态。redisContext 结构有一个整数类型的err域,当该值非零时表示连接有错,并表示错误类型。 更多错误信息请参考Errors部分。因此,当使用redisconnect函数连接Redis时,需要判断err域,检查建立连接是否成功。

redisContext *c = redisConnect("127.0.0.1", 6379);
if (c->err) {
    printf("Error: %s\n", c->errstr);
    // handle error
}

2. 发送命令(Send Commands)

         hiRedis有多种方式发送命令给Redis。其中,第一个方法是使用redisCommand。该函数的原型与printf很相似。最简单的形式,我们可以如下使用redisCommand:

reply = redisCommand(context, "SET foo bar");

         也可以使用像printf的格式化方法,插入字符串,如下:

reply = redisCommand(context, "SET foo %s", value);

      当需要在命令中传递一个二进制安全的字符串时,可以使用%b,一个字符串指针,和size_t类型的字符串长度。

reply = redisCommand(context, "SET foo %b", value, valuelen);

3. 使用replies

当命令成功执行时,redisCommand的返回值保存一个reply;而当有错误产生时,返回NULL,并且设置context中的err域。当有错误产生时,连接不可再用,需要重新创建一个连接。

redisCommand返回的标准的replies为redisReply类型。RedisReply类型的type域用于保存客户端接收到的是哪钟类型的reply:

  • REDIS_REPLY_STATUS:

命令返回一个status。status 字符串可以使用reply->str访问,字符串长度使用reply->len访问

  • REDIS_REPLY_ERROR:

命令返回一个error。error字符串访问同status。

  •  REDIS_REPLY_INTEGER:

 命令返回一个整数。整数值可以使用reply->integer域访问,类型为long long。

  • REDIS_REPLY_NIL

命令返回一个nil对象,表示访问数据不存在

  • REDIS_REPLY_STRING

命令返回一个字符串对象。访问同status。

  • REDIS_REPLY_ARRAY

命令返回一个数组对象。数组元素个数保存在reply->elements,数组中的每个元素都是一个redisReply对象,可以通过reply->element[…index…]访问。Redis支持嵌套数组。

最后,需要调用freeReplyObject()函数释放Replies。该函数会自动释放数组或嵌套数组的sub-replies 对象,因此不需要手动释放sub-replies。


4. 断开连接

         为了断开连接和释放context,需要调用如下函数:

void redisFree(redisContext *c);

该函数会立即关闭socket,然后释放context创建时的分配内容。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值