通过Hiredis连接实例
本章节主要介绍使用Hiredis访问GeminiDB Redis实例的方法。
前提条件
操作步骤
- 获取GeminiDB Redis实例的负载均衡地址和端口。
- 负载均衡地址的查看方法请参见查看负载均衡地址及端口。
- 端口的获取方法请参见查看实例节点端口。
- 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
- 使用如下命令,下载并解压Hiredis。
wget https://github.com/redis/hiredis/archive/master.zip
- 进入到解压目录后编译安装Hiredis。
make
make install
- 编写测试代码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; }
- 执行如下命令进行编译。
gcc connRedis.c -o connRedis -I /usr/local/include/hiredis -lhiredis
如果有报错,可查找hiredis.h文件路径,并修改编译命令。
编译完后得到一个可执行文件connRedis。
- 执行如下命令,连接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实例时自定义的密码。
- 返回如下回显信息,表示成功连接GeminiDB Redis实例。
AUTH: OK SET: OK GET key: Hello, hiredis test ok!