redis和hiredis的基本使用詳解
介紹了一下redis和hiredis的安裝步驟,用一個簡單的demo演示了使用redis的基本過程。
啟動redis步驟
1、下載redis:https://github.com/redis/redis
2、編譯命令:make
3、編譯產物:libredis.a(靜態(tài)庫)和可執(zhí)行文件( redis-server)
4、運行redis服務:./redis-server
使用hiredis(redis客戶端)連接redis
1、下載hiredis:https://github.com/redis/hiredis/tree/v1.3.0
2、編譯命令:
make sudo make install sudo ldconfig
3、編寫一個簡單的demo
#include <iostream>
#include <string>
extern "C" {
#include <hiredis/hiredis.h>
}
int main() {
// 連接 Redis 服務器
redisContext* context = redisConnect("127.0.0.1", 6379);
if (context == nullptr || context->err) {
if (context) {
std::cerr << "連接錯誤: " << context->errstr << std::endl;
redisFree(context);
} else {
std::cerr << "無法分配 Redis 連接上下文" << std::endl;
}
return 1;
}
std::cout << "成功連接到 Redis 服務器" << std::endl;
// 執(zhí)行 SET 命令
redisReply* reply = static_cast<redisReply*>(redisCommand(context, "SET mykey %s", "Hello, Redis!"));
if (reply == nullptr) {
std::cerr << "執(zhí)行 SET 命令失敗" << std::endl;
redisFree(context);
return 1;
}
// 檢查 SET 命令結果
if (reply->type == REDIS_REPLY_STATUS && std::string(reply->str) == "OK") {
std::cout << "SET 命令執(zhí)行成功" << std::endl;
} else {
std::cerr << "SET 命令執(zhí)行失敗: " << reply->str << std::endl;
}
freeReplyObject(reply);
// 執(zhí)行 GET 命令
reply = static_cast<redisReply*>(redisCommand(context, "GET mykey"));
if (reply == nullptr) {
std::cerr << "執(zhí)行 GET 命令失敗" << std::endl;
redisFree(context);
return 1;
}
// 檢查 GET 命令結果
if (reply->type == REDIS_REPLY_STRING) {
std::cout << "GET 結果: " << reply->str << std::endl;
} else {
std::cerr << "GET 命令執(zhí)行失敗,非預期的回復類型" << std::endl;
}
freeReplyObject(reply);
// 執(zhí)行 INCR 命令(演示數值操作)
reply = static_cast<redisReply*>(redisCommand(context, "INCR counter"));
if (reply == nullptr) {
std::cerr << "執(zhí)行 INCR 命令失敗" << std::endl;
redisFree(context);
return 1;
}
// 檢查 INCR 命令結果(整數類型)
if (reply->type == REDIS_REPLY_INTEGER) {
std::cout << "INCR 結果: " << reply->integer << std::endl;
}
freeReplyObject(reply);
// 釋放連接
redisFree(context);
std::cout << "已斷開與 Redis 服務器的連接" << std::endl;
return 0;
}代碼說明
- 連接部分:使用
redisConnect連接到本地 Redis 服務器(默認ip地址是127.0.0.1,端口6379) - 錯誤處理:檢查連接是否成功,并處理可能的錯誤
- 命令執(zhí)行:使用
redisCommand執(zhí)行 Redis 命令,如 SET、GET、INCR - 結果解析:根據
redisReply的類型判斷命令執(zhí)行結果 - 資源釋放:使用
freeReplyObject釋放回復對象,使用redisFree釋放連接
4、編譯:g++ -o redis_demo main.cpp -lhiredis
5、運行程序:./redis_demo
6、日志輸出:
成功連接到 Redis 服務器
SET 命令執(zhí)行成功
GET 結果: Hello, Redis!
INCR 結果: 1
已斷開與 Redis 服務器的連接
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

