redis系列-redis的连接

转自:http://blog.csdn.net/whuqin/article/details/17530709

Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

redis客户端连接比较简单,但日常中redis的使用和维护会有很多地方需要学习。本文只简单介绍下常用函数。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //hiredis/hiredis.h  
  2. /* Context for a connection to Redis */  
  3. typedef struct redisContext {  
  4.     int err; /* Error flags, 0 when there is no error */  
  5.     char errstr[128]; /* String representation of error when applicable */  
  6.     int fd;   
  7.     int flags;  
  8.     char *obuf; /* Write buffer */  
  9.     redisReader *reader; /* Protocol reader */  
  10. } redisContext;  
  11.   
  12. /* This is the reply object returned by redisCommand() */  
  13. #define REDIS_REPLY_STRING 1  
  14. #define REDIS_REPLY_ARRAY 2  
  15. #define REDIS_REPLY_INTEGER 3  
  16. #define REDIS_REPLY_NIL 4  
  17. #define REDIS_REPLY_STATUS 5  
  18. #define REDIS_REPLY_ERROR 6  
  19. typedef struct redisReply {  
  20.     int type; /* REDIS_REPLY_* */  
  21.     long long integer; /* The integer when type is REDIS_REPLY_INTEGER */  
  22.     int len; /* Length of string */  
  23.     char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */  
  24.     size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */  
  25.     struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY */  
  26. } redisReply;  
  27.   
  28. redisContext *redisConnectWithTimeout(const char *ip, int port, struct timeval tv);  
  29. void redisFree(redisContext *c);  
  30. //Issue a command to Redis, NULL if error, otherwise reply  
  31. void *redisCommand(redisContext *c, const char *format, ...);  
  32. /* Function to free the reply objects hiredis returns by default. */  
  33. void freeReplyObject(void *reply);  


应用实例:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include "hiredis/hiredis.h"  
  2.   redisContext* context = NULL;  
  3.   redisReply* reply = NULL;  
  4.   int retry = 0;  
  5.   while (retry < 5)   
  6.   {  
  7.     reply != NULL ? freeReplyObject(reply):;  
  8.     context != NULL ? redisFree(context):;  
  9.     context = redisConnect("127.0.0.1", 8600);  
  10.     if (NULL == context || context->err != 0)  
  11.     {  
  12.       cout << "connect err" << endl;  
  13.       continue;  
  14.     }  
  15.     redisReply* reply = (redisReply*)redisCommand(context, "%s""set name John");  
  16.     if (NULL == reply || reply == REDIS_REPLY_ERROR)  
  17.     {  
  18.      cout << "exe command fail" << endl;  
  19.      continue;  
  20.     }  
  21.     cout << "ok" << endl;    
  22.   }  
  23.   reply != NULL ? freeReplyObject(reply):;  
  24.   context != NULL ? redisFree(context):;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值