本文主要介绍使用Hiredis接口(Synchronous API)编写Redis客户端的方法。
1 Hiredis概述
引用GitHub上的描述:
Hiredis is a minimalistic C client library for the Redis database.
2 Redis客户端示例
使用Hiredis的Synchronous API接口编写Redis的客户端,通常需要调用以下几个函数:
redisContext *redisConnect(const char *ip, int port); // 建立redis连接
void *redisCommand(redisContext *c, const char *format, ...); // 执行redis命令
void freeReplyObject(void *reply); // 释放redis命令的返回内容
2.1 示例代码
完整的示例代码(hiredis_syncAPI.cpp)如下:
#include <iostream>
#include "hiredis/hiredis.h"
using namespace std;
int main()
{
// 建立redis连接
redisContext *c = redisConnect("192.168.213.133", 6379);
if ((c == NULL) || (c->err))
{
if (c)
{
cout << "Error: " << c->errstr << endl;
// 释放redis连接
redisFree(c);
return -1;
}
else
{
cout << "Can't allocate redis context." << endl;
return -1;
}
}
else
{
cout << "Connected to Redis." << endl;
}
redisReply *reply;
// 添加数据
reply = (redisReply *)redisCommand(c, "SET zs zhanshi");
cout << "SET reply is: " << reply->str << endl;
freeReplyObject(reply);
// 查询数据
reply = (redisReply *)redisCommand(c, "GET zs");
cout << "GET reply is: " << reply->str << endl;
freeReplyObject(reply);
// 释放redis连接
redisFree(c);
return 0;
}
2.2 编译Redis客户端
执行下面的命令编译上述代码,生成Redis客户端:
g++ -o hiredis_syncAPI hiredis_syncAPI.cpp -lhiredis
2.3 测试Redis客户端
2.3.1 启动Redis服务器
在主机(IP地址为“192.168.213.133”)上打开Redis服务器,该Redis服务器监听对于“192.168.213.133”的连接,如下:
[root@node1 /opt/liitdar/hiredis]# redis-server /etc/redis.conf
2.3.2 启动Redis客户端
在另外一台主机(IP地址为“192.168.213.131”)上运行前面编译生成的Redis客户端“hiredis_syncAPI”,如下:
./hiredis_syncAPI
2.3.3 观察测试结果
正常情况下,我们编写的客户端能够连接到Redis服务器,并执行指定的Redis命令,如下:
如果运行Redis客户端的终端中出现上述信息,说明我们的编写的Redis客户端运行成功了。