zoukankan      html  css  js  c++  java
  • Redis的C语言客户端(hiredis)的安装和使用

    关键词:hirediscRedisredis clientsredis客户端C客户端华为云分布式缓存服务

    hiredis是一个非常全面的C语言版redis接口库,支持所有命令、管道与脚本。华为云分布式缓存服务Redis版支持hiredis客户端连接。

    使用C语言客户端(hiredis)连接Redis,需要先安装编译环境以及hiredis,以CentOS为例,介绍C客户端环境搭建。

    第0步:准备工作

    华为云上购买1台弹性云服务器ECS(我选了CentOS 6.3),一个分布式缓存实例(DCS for Redis),我选了个单机实例。

    注意ECS和缓存实例配置相同的VPC和安全组,确保网络互通。

    第1步:安装gcc、make和hiredis

    如果系统没有自带编译环境,可以使用yum方式安装。

    yum install gcc make

    下载并解压hiredis

    wget https://github.com/redis/hiredis/archive/master.zip;

    进入到解压目录后编译安装

    make 

    make install

    安装完成后即可尝试连接。

    第2步:连接Redis

    关于hiredis的使用,redis官网给了详细的使用介绍。这里举一个简单的例子,介绍连接、密码鉴权、set以及get方法。

    编辑连接demo实例,如:

    vim connRedis.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <hiredis.h>
    int main(int argc, char **argv) {
         unsigned int j;
         redisContext *conn;
         redisReply *reply;
         if (argc < 3) {
                 printf("Usage: example {instance_ip_address} 6379 {password}
    ");
                 exit(0);
         }
         const char *hostname = argv[1];
         const int port = atoi(argv[2]);
         const char *password = argv[3];
         struct timeval timeout = { 1, 500000 }; // 1.5 seconds
         conn = redisConnectWithTimeout(hostname, port, timeout);
         if (conn == NULL || conn->err) {
    		if (conn) {
                 printf("Connection error: %s
    ", conn->errstr);
                 redisFree(conn);
    		} else {
                 printf("Connection error: can't allocate redis context
    ");
    		}
         exit(1);
         }
         /* AUTH */
         reply = redisCommand(conn, "AUTH %s", password);
         printf("AUTH: %s
    ", reply->str);
         freeReplyObject(reply);
    
         /* Set */
         reply = redisCommand(conn,"SET %s %s", "welcome", "Hello, DCS for Redis!");
         printf("SET: %s
    ", reply->str);
         freeReplyObject(reply);
        
         /* Get */
         reply = redisCommand(conn,"GET welcome");
         printf("GET welcome: %s
    ", reply->str);
         freeReplyObject(reply);
         
         /* Disconnects and frees the context */
         redisFree(conn);
         return 0;
    }

    保存后退出,执行以下命令编译:

    gcc connRedis.c -o connRedis  -I /usr/local/include/hiredis -lhiredis

    如果有报错,可查找hiredis.h文件路径,并修改编译命令。

    编译完后得到一个可执行文件connRedis,

    测试以下命令测试连接:

     ./connRedis {redis_ip_address} 6379 {password}

    得到以下回显,则demo正常运行:

    [root@ecs-herucentos heru]#  ./connRedis 192.168.0.171 6379 Heru+123
    AUTH: OK
    SET: OK
    GET welcome: Hello, DCS for Redis!
    [root@ecs-herucentos heru]# 

    注意,如果运行报错找不到hiredis库文件,可参考如下,将相关文件拷贝到系统目录,并增加动态链接。

    mkdir /usr/lib/hiredis
    cp /usr/local/lib/libhiredis.so.0.13 /usr/lib/hiredis/
    mkdir /usr/include/hiredis
    cp /usr/local/include/hiredis/hiredis.h /usr/include/hiredis/
    echo '/usr/local/lib' >>/etc/ld.so.conf
    ldconfig

    以上so文件与.h文件的位置,需要替换成实际文件位置。

     

  • 相关阅读:
    C语言函数指针
    C语言动态申请内存
    C语言指针的常见错误
    C语言指针和数组的关系
    jni c语言使用指针交换两个值
    求两条线段的交点
    利用Opencv在PictureControl中显示照片
    根据反射解析和转换DataRow
    快速排序代码备份
    OpenCV常用图像操作和鼠标操作(双11版本)
  • 原文地址:https://www.cnblogs.com/husterindg/p/hiredis.html
Copyright © 2011-2022 走看看