• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    hiredis从安装到项目实战操作

    Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集。

    花个两分钟跟我一起配置hiredis

    当我们下载了最新版redis的时候,其实就已经自带了C++版本的操作库,只不过有些人没发现罢了。

    进入到deps->hiredis目录下(在你的redis解压目录下有deps)

    然后:make install

    一步到位。

    其实连测试函数他们都给你准备好了,在hedis文件夹中还有个文件夹,example,里面有个example.c文件。

    这样编译,如果不会的话:首先需要把里面的头文件改一下:#includehiredis/hiredis.h>
    编译的时候记得带上依赖项:
    gcc example.c -o example -L/usr/local/lib -lhiredis

    当你运行的时候,(别给我说你不会运行:./example)如果不出意外,会跟你说依赖项找不着。
    正常,教你一个治标的办法:

    在/etc/ld.so.conf.d/目录下新建文件usr-libs.conf,内容是:/usr/local/lib

    然后使用命令/sbin/ldconfig更新一下配置即可。

    这东西配置完,你虚拟机重启之后就没了,永久配置好像在我的另一篇博客里有,动态库专栏下。

    最后的运行效果:

    redis的C/C++ API

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

    参数释义:
    该函数用来连接redis数据库, 两个参数分别是redis数据库的ip和端口,端口号一般为6379。

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

    该函数用于执行redis数据库中的命令,第一个参数为连接数据库返回的redisContext,剩下的参数为变参.。

    此函数的返回值为void*,但是一般会强制转换为redisReply类型,以便做进一步的处理。

    void freeReplyObject(void *reply);

    释放redisCommand执行后返回的的redisReply所占用的内存。

    void redisFree(redisContext *c)

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

    实操代码示例

    #include stdio.h>
    #include stdlib.h>
    #include string.h>
    #includehiredis/hiredis.h>
    
    int main(int argc, char **argv) {
     unsigned int j, isunix = 0;
     redisContext *c;		
     redisReply *reply;		:
     const char *hostname = (argc > 1) ? argv[1] : "127.0.0.1";
    
     if (argc > 2) {
      if (*argv[2] == 'u' || *argv[2] == 'U') {
       isunix = 1;
       /* in this case, host is the path to the unix socket */
       printf("Will connect to unix socket @%s\n", hostname);
      }
     }
    
     int port = (argc > 2) ? atoi(argv[2]) : 6379;
     
    	struct timeval timeout = { 1, 500000 }; // 1.5 seconds
     if (isunix) {
      c = redisConnectUnixWithTimeout(hostname, timeout);
      //该函数用来连接redis数据库, 两个参数分别是redis数据库的ip和端口,端口号一般为6379。
     } else {
      c = redisConnectWithTimeout(hostname, port, timeout);
     }
     if (c == NULL || c->err) {
      if (c) {
       printf("Connection error: %s\n", c->errstr);	
       redisFree(c);	//释放redisConnect()所产生的连接。
      } else {
       printf("Connection error: can't allocate redis context\n");
      }
      exit(1);
     }
    
    	 /* PING server */
     reply = redisCommand(c,"PING");	
     //该函数用于执行redis数据库中的命令,第一个参数为连接数据库返回的redisContext,剩下的参数为变参.。
    	//此函数的返回值为void*,但是一般会强制转换为redisReply类型,以便做进一步的处理。
     
     printf("PING: %s\n", reply->str);
     freeReplyObject(reply);	//释放redisCommand执行后返回的的redisReply所占用的内存。
    
    	 /* Set a key */
     reply = redisCommand(c,"SET %s %s", "foo", "hello world");
     printf("SET: %s\n", reply->str);
     freeReplyObject(reply);
    
     /* Set a key using binary safe API */
     reply = redisCommand(c,"SET %b %b", "bar", (size_t) 3, "hello", (size_t) 5);
     printf("SET (binary API): %s\n", reply->str);
     freeReplyObject(reply);
    
     /* Try a GET and two INCR */
     reply = redisCommand(c,"GET foo");
     printf("GET foo: %s\n", reply->str);
     freeReplyObject(reply);
    
     reply = redisCommand(c,"INCR counter");
     printf("INCR counter: %lld\n", reply->integer);
     freeReplyObject(reply);
     /* again ... */
     reply = redisCommand(c,"INCR counter");
     printf("INCR counter: %lld\n", reply->integer);
     freeReplyObject(reply);
    
     /* Create a list of numbers, from 0 to 9 */
     reply = redisCommand(c,"DEL mylist");
     freeReplyObject(reply);
     for (j = 0; j  10; j++) {
      char buf[64];
      snprintf(buf,64,"%u",j);
      reply = redisCommand(c,"LPUSH mylist element-%s", buf);
      freeReplyObject(reply);
     }
    
     /* Let's check what we have inside the list */
     reply = redisCommand(c,"LRANGE mylist 0 -1");
     if (reply->type == REDIS_REPLY_ARRAY) {
      for (j = 0; j  reply->elements; j++) {
       printf("%u) %s\n", j, reply->element[j]->str);
      }
     }
     freeReplyObject(reply);
    
     /* Disconnects and frees the context */
     redisFree(c);
    
     return 0;
    }

    到此这篇关于hiredis从安装到项目实战操作的文章就介绍到这了,更多相关hiredis安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:redis 交集、并集、差集的具体使用
    下一篇:Redis数组和链表深入详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    hiredis从安装到项目实战操作 hiredis,从,安,装到,项目,