zoukankan      html  css  js  c++  java
  • redis C接口hiredis 简单函数使用介绍

    from : http://blog.csdn.net/kingqizhou/article/details/8104693


    hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了

     

    函数原型:redisContext *redisConnect(const char *ip, int port)

    说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379

    该函数返回一个结构体redisContext。

     

    函数原型:void *redisCommand(redisContext *c, const char *format, ...);

    说明:该函数执行命令,就如sql数据库中的SQL语句一样,只是执行的是redis数据库中的操作命令,第一个参数为连接数据库时返回的redisContext,剩下的参数为变参,就如C标准函数printf函数一样的变参。返回值为void*,一般强制转换成为redisReply类型的进行进一步的处理。

     

    函数原型void freeReplyObject(void *reply);

    说明:释放redisCommand执行后返回的redisReply所占用的内存

     

    函数原型:void redisFree(redisContext *c);

    说明:释放redisConnect()所产生的连接。

     

    下面用一个简单的例子说明:

     

     

    1. #include <stdio.h>  
    2. #include <stdlib.h>  
    3. #include <stddef.h>  
    4. #include <stdarg.h>  
    5. #include <string.h>  
    6. #include <assert.h>  
    7. #include <hiredis/hiredis.h>  
    8.   
    9. void doTest()  
    10. {  
    11.     //redis默认监听端口为6387 可以再配置文件中修改  
    12.     redisContext* c = redisConnect("127.0.0.1", 6379);  
    13.     if ( c->err)  
    14.     {  
    15.         redisFree(c);  
    16.         printf("Connect to redisServer faile ");  
    17.         return ;  
    18.     }  
    19.     printf("Connect to redisServer Success ");  
    20.       
    21.     const char* command1 = "set stest1 value1";  
    22.     redisReply* r = (redisReply*)redisCommand(c, command1);  
    23.       
    24.     if( NULL == r)  
    25.     {  
    26.         printf("Execut command1 failure ");  
    27.         redisFree(c);  
    28.         return;  
    29.     }  
    30.     if( !(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK")==0))  
    31.     {  
    32.         printf("Failed to execute command[%s] ",command1);  
    33.         freeReplyObject(r);  
    34.         redisFree(c);  
    35.         return;  
    36.     }     
    37.     freeReplyObject(r);  
    38.     printf("Succeed to execute command[%s] ", command1);  
    39.       
    40.     const char* command2 = "strlen stest1";  
    41.     r = (redisReply*)redisCommand(c, command2);  
    42.     if ( r->type != REDIS_REPLY_INTEGER)  
    43.     {  
    44.         printf("Failed to execute command[%s] ",command2);  
    45.         freeReplyObject(r);  
    46.         redisFree(c);  
    47.         return;  
    48.     }  
    49.     int length =  r->integer;  
    50.     freeReplyObject(r);  
    51.     printf("The length of 'stest1' is %d. ", length);  
    52.     printf("Succeed to execute command[%s] ", command2);  
    53.       
    54.       
    55.     const char* command3 = "get stest1";  
    56.     r = (redisReply*)redisCommand(c, command3);  
    57.     if ( r->type != REDIS_REPLY_STRING)  
    58.     {  
    59.         printf("Failed to execute command[%s] ",command3);  
    60.         freeReplyObject(r);  
    61.         redisFree(c);  
    62.         return;  
    63.     }  
    64.     printf("The value of 'stest1' is %s ", r->str);  
    65.     freeReplyObject(r);  
    66.     printf("Succeed to execute command[%s] ", command3);  
    67.       
    68.     const char* command4 = "get stest2";  
    69.     r = (redisReply*)redisCommand(c, command4);  
    70.     if ( r->type != REDIS_REPLY_NIL)  
    71.     {  
    72.         printf("Failed to execute command[%s] ",command4);  
    73.         freeReplyObject(r);  
    74.         redisFree(c);  
    75.         return;  
    76.     }  
    77.     freeReplyObject(r);  
    78.     printf("Succeed to execute command[%s] ", command4);     
    79.       
    80.       
    81.     redisFree(c);  
    82.       
    83. }  
    84.   
    85. int main()  
    86. {  
    87.     doTest();  
    88.     return 0;  
    89. }  

     

    执行结果为:


  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318320.html
Copyright © 2011-2022 走看看