更新时间:2024-10-30 GMT+08:00

通过Hiredis连接实例

本章节主要介绍使用Hiredis访问GeminiDB Redis实例的方法。

前提条件

  • 已成功创建GeminiDB Redis实例,且实例状态正常。创建GeminiDB Redis实例的方法请参见购买实例(集群版)
  • 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器快速入门》中“购买弹性云服务器”章节。
  • 弹性云服务器上已经安装GCC等编译工具。
  • 创建的弹性云服务器GeminiDB Redis实例要保证区域、可用区、VPC和安全组一致。

操作步骤

  1. 获取GeminiDB Redis实例的负载均衡地址和端口。

  2. 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
  3. 使用如下命令,下载并解压Hiredis。

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

  4. 进入到解压目录后编译安装Hiredis。

    make

    make install

  5. 编写测试代码connRedisTst.cc。

    关于Hiredis的详细用法,请参考redis官网的使用介绍。

    代码如下:

    #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}\n");
                 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\n", conn->errstr);
                 redisFree(conn);
                  } else {
                 printf("Connection error: can't allocate redis context\n");
                  }
         exit(1);
         }
         /* AUTH */
         reply = redisCommand(conn, "AUTH %s", password);
         printf("AUTH: %s\n", reply->str);
         freeReplyObject(reply);
     
         /* Set */
         reply = redisCommand(conn,"SET %s %s", "key", "hiredis test ok!");
         printf("SET: %s\n", reply->str);
         freeReplyObject(reply);
     
         /* Get */
         reply = redisCommand(conn,"GET key");
         printf("GET key: %s\n", reply->str);
         freeReplyObject(reply);
     
         /* Disconnects and frees the context */
         redisFree(conn);
         return 0;
    }

  6. 执行如下命令进行编译。

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

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

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

  7. 执行如下命令,连接GeminiDB Redis实例。

    export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

    ./connRedis <redis_ip_address> 8635 <password>

    其中,以下信息需按照实际情况进行替换:

    • <redis_ip_address>为1中获取到的GeminiDB Redis实例的负载均衡地址。
    • “8635”GeminiDB Redis实例的端口。
    • <password>为创建GeminiDB Redis实例时自定义的密码。

  8. 返回如下回显信息,表示成功连接GeminiDB Redis实例。

    AUTH: OK
    SET: OK
    GET key: Hello, hiredis test ok!