hiredis是Redis官方推荐的基于C接口的客户端组件,它提供接口,供c语言调用以操作数据库。
//头文件 #include//连接redis数据库,参数为ip地址和端口号,默认端口6379.该函数返回一个redisContext对象 redisContext *redisConnect(const char *ip, int port); //执行redis命令,返回redisReply对象 void *redisCommand(redisContext *c, const char *format, ...); //释放redisCommand执行后返回的RedisReply对象 void freeReplyObject(void *reply); //断开redisConnect所产生的连接 void redisFree(redisContext *c); //redisReply对象结构如下: typedef struct redisReply { int type; // 返回结果类型 long long integer; // 返回类型为整型的时候的返回值 size_t len; // 字符串的长度 char *str; // 返回错误类型或者字符串类型的字符串 size_t elements; // 返回数组类型时,元素的数量 struct redisReply **element; // 元素结果集合 }redisReply; //返回类型有以下几种: REDIS_REPLY_STRING 1 //字符串 REDIS_REPLY_ARRAY 2 //数组,多个reply,通过element数组以及elements数组大小访问 REDIS_REPLY_INTEGER 3 //整型 REDIS_REPLY_NIL 4 //空,没有数据 REDIS_REPLY_STATUS 5 //状态,str字符串以及len REDIS_REPLY_ERROR 6 //错误,同STATUS
C程序操作Redis代码示例:
#include#include #include #include #include #include int main() { //连接redis redisContext *c = redisConnect("127.0.0.1", 6379); assert(c != NULL); //要执行的redis命令 char * com = "hmset user:1 name wangjiaxin age 21"; //执行命令 redisReply * r = (redisReply*)redisCommand(c, com); assert(r != NULL); //执行命令后获得的结果集的类型 if(r->type == REDIS_REPLY_STATUS) { printf("%sn", r->str); printf("successn"); } else { printf("failn"); } com = "hgetall user:1"; r = (redisReply*)redisCommand(c, com); if(r->type == REDIS_REPLY_ARRAY) //数组,多个reply,通过element数组以及elements数组大小访问 { int i = 0; for(; i < r->elements; ++i) { if((i+1) % 2 == 0) { printf("%sn", r->element[i]->str); } else { printf("%s ", r->element[i]->str); } } } freeReplyObject(r); // 释放redisReply对象 redisFree(c); // 断开连接 return 0; }



