使用 hiredis 客户端库封装一个简单的 Redis 类
以下是一个简单的 Redis
类,使用 hiredis
库来封装基本的连接和命令执行功能。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis/hiredis.h>
class Redis {
private:
redisContext *context;
redisReply *reply;
public:
Redis(const char *ip, int port) {
context = redisConnect(ip, port);
if (context == NULL || context->err) {
if (context) {
printf("Connection error: %s\n", context->errstr);
redisFree(context);
} else {
printf("Connection error: can't allocate redis context\n");
}
exit(1);
}
}
~Redis() {
redisFree(context);
}
void set(const char *key, const char *value) {
reply = (redisReply*)redisCommand(context, "SET %s %s", key, value);
freeReplyObject();
}
char *get(const char *key) {
reply = (redisReply*)redisCommand(context, "GET %s", key);
if (reply->type == REDIS_REPLY_NIL) {
freeReplyObject();
return NULL;
}
char *value = strdup(reply->str);
freeReplyObject();
return value;
}
private:
void freeReplyObject() {
freeReplyObject(reply);
}
};
int main() {
Redis redis("127.0.0.1", 6379);
redis.set("key", "value");
char *value = redis.get("key");
if (value) {
printf("GET key: %s\n", value);
free(value);
}
return 0;
}
这段代码展示了如何使用 hiredis
连接到一个 Redis 服务器,并执行简单的 SET
和 GET
命令。它还演示了如何封装一个简单的 Redis 类,并在其中处理连接和错误。在实际应用中,你可能需要添加更多的错误检查和异常处理,以及考虑线程安全性等问题。
评论已关闭