• hiredis


    hiredis是redis开源库对外发布的客户端API包。

    当redis-server配置启动后,可以通过hiredis操作redis资源。

    主要分为:

      strings、hash、lists、sets、sort sets

    hiredis使用较为简单,下面是几个主要的函数和对象:

     /*
    作用:用于连接redis服务器
     ip : 为redis的ip地址;
     port: 端口地址;
     tv:连接超时的参数;
    */
     redisContext *redisConnectWithTimeout(const char *ip, int port, struct timeval tv);
    /*
    作用:执行命令
    c:redisConnectWitTimeout返回的对象;
    format:命令参数;
    */
    
    void *redisCommand(redisContext *c, const char *format, ...)
     /*
     说明:redisCommand返回的对象指针,也就是已经命令返回的结果数据
    */
     
     typedef struct redisReply {
          int type; /* REDIS_REPLY_* */
          long long integer; /* The integer when type is REDIS_REPLY_INTEGER */
         int len; /* Length of string */
          char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */
          size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */
          struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY */
      } redisReply;

    来一个具体的实例

     1 /*需要配置,才能编译通过*/
     2 #include <iostream>
     3 #include "hiredis.h"
     4 
     5 #define MAX_LEN  64
     6 
     7 int main()
     8 {
     9     timeval timeout = {1,500000};
    10     char ip[MAX_LEN],passwd[MAX_LEN];
    11     memset(ip,0,MAX_LEN);
    12     memset(passwd,0,MAX_LEN);
    13     sprintf(ip,"*****");
    14     sprintf(passwd,"******");
    15     uint32_t port = 6379;
    16     redisContext  *m_pRedisContext = redisConnectWithTimeout(ip,port,timeout);
    17     if(m_pRedisContext->err){
    18         std::cout << "log, redis connect error
    ";
    19         return 0;
    20     }
    21     
    22     redisReply *reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,
    23                 "AUTH %s",passwd));
    24     if(!reply){
    25         std::cout << "log, redis command error, " << m_pRedisContext->errstr << 
    26             std::endl;
    27         return 0;
    28     }
    29 
    30     std::cout << "AUTH " << passwd << reply->str << std::endl;
    31     freeReplyObject(reply);
    32    
    33     //create datadase id = 1;
    34     uint32_t index  = 1;
    35     reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,"SELECT %d",1));
    36     if(!reply) {
    37         std::cout << "log, redis command error," << m_pRedisContext->errstr << 
    38             std::endl;
    39         freeReplyObject(reply);
    40         return 0;
    41     }
    42 
    43     std::cout << "SELECT " << index << reply->str << std::endl;
    44     freeReplyObject(reply);
    45     
    46     uint32_t id = 1;
    47     reply = static_cast<redisReply*>(redisCommand(m_pRedisContext, 
    48                 "HMSET user:%u %s %s %s %s",id,"name","xuxu","age","24"));
    49     if(!reply){
    50         std::cout << "log, redis command error," << m_pRedisContext->errstr << 
    51             std::endl;
    52         freeReplyObject(reply);
    53         return 0;
    54     }
    55     
    56     reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,
    57                 "SET name:%s %s","1","liushun"));
    58     if(!reply){
    59         std::cout << "log, redis command error, " << m_pRedisContext->errstr << 
    60             std::endl;
    61         freeReplyObject(reply);
    62         return 0;
    63   }
    64 
    65     reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,"GET name:%s","1"));
    66     if(!reply){
    67         std::cout << "log, redis command error," << m_pRedisContext->errstr << 
    68             std::endl;
    69         freeReplyObject(reply);
    70         return 0;
    71     }
    72 
    73     std::cout << reply->str << std::endl;
    74     freeReplyObject(reply);
    75   
    76     return 0;
    77 }
  • 相关阅读:
    8. String to Integer (atoi)
    PHP Warning: strftime(): It is not safe to rely on the system's timezone set
    Jackson 使用
    用vim去掉utf-8 BOM
    oracle 11g 从 dmp 文件中导出 sql 代码 的方法.
    git gitosis 添加项目
    Linux gcc和gdb程序调试用法 {转}
    Dos中转义符
    HTML样式链接到外部样式表
    转:财富与智慧
  • 原文地址:https://www.cnblogs.com/xuxu8511/p/3240941.html
Copyright © 2020-2023  润新知