介(jie)紹使(shi)(shi)用同一VPC內(nei)彈性(xing)云主機ECS上(shang)的C++ hiredis連(lian)接Redis實例(li)的方法。更(geng)多的客戶端的使(shi)(shi)用方法請參考。
說明
本章(zhang)節操作,僅適用(yong)于連(lian)接(jie)單機(ji)、主備、Proxy集群實例,如果是使用(yong)C++ Redis客戶端連(lian)接(jie)Cluster集群,請參考C++ Redis客戶端。
前提條件
- 已成功申請Redis實例,且狀態為“運行中”。
- 已創建彈性云主機,創建彈性云主機的方法,請參見《彈性云主機用戶指南》。
- 如果彈性云主機為Linux系統,該彈性云主機必須已經安裝gcc編譯環境。
操作步驟
步驟 1 查(cha)看并獲(huo)取(qu)待連接Redis實例的IP地址(zhi)和端口(kou)。
具體步驟請參見查看實例信息。
步驟 2 登錄彈性(xing)云主(zhu)機(ji)。
本章(zhang)節以彈性云(yun)主機操(cao)作系統為centos為例介(jie)紹通過C++ redis客(ke)戶端連(lian)接實例。
步驟 3 安(an)裝gcc、make和(he)hiredis。
如果系統沒有自帶編譯環(huan)境,可以(yi)使用(yong)yum方式(shi)安裝。
yum install gcc make
步驟(zou) 4 下載(zai)并解壓(ya)hiredis。
wget //github.com/redis/hiredis/archive/master.zip
unzip master.zip
步驟 5 進入到解壓目錄(lu)后編譯(yi)安裝。
make
make install
步驟 6 使用hiredis客戶端(duan)連接Redis實例。
關于(yu)hiredis的(de)(de)使用,請(qing)參考redis官網的(de)(de)使用介紹(shao)。這里舉一(yi)個簡單的(de)(de)例子,介紹(shao)連(lian)接、密碼(ma)鑒權等的(de)(de)使用。
- 編輯連接Redis實例的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}\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", "welcome", "Hello, DCS for Redis!");
printf("SET: %s\n", reply->str);
freeReplyObject(reply);
/* Get */
reply = redisCommand(conn,"GET welcome");
printf("GET welcome: %s\n", reply->str);
freeReplyObject(reply);
/* Disconnects and frees the context */
redisFree(conn);
return 0;
}
2.執行以下命令(ling)進(jin)行編譯。
gcc connRedis.c -o connRedis -I /usr/local/include/hiredis -lhiredis
如果有報錯,可查找hiredis.h文件路(lu)徑,并修改編(bian)譯(yi)命令(ling)。
編(bian)譯完后得(de)到一個可(ke)執行(xing)文件connRedis。
3.執行以下命令,連(lian)接(jie)Redis實例。
./connRedis {redis_ip_address} 6379 {password}
其中, {redis_instance_address} 為Redis實例的IP地址,“6379”為Redis實例的端口。IP地址和端口獲取見步驟1,請按實際情況修改后執行。 {password} 為(wei)創建Redis實例時自(zi)定義的密碼,請按實際情況修改后執行(xing)。
返(fan)回以(yi)下回顯信息,表示成功連接(jie)Redis實例。
AUTH: OK
SET: OK
GET welcome: Hello, DCS for Redis!
說明
如果(guo)運行報錯找(zhao)不(bu)到hiredis庫文件(jian),可參考如下命(ming)令,將相關文件(jian)復制到系統目錄,并增(zeng)加動態(tai)鏈接。
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文件(jian)與.h文件(jian)的位置(zhi),需要替換成實際文件(jian)位置(zhi)。