C++ 中使用 redis 可以用 hiredis 完成,但是 hiredis 是用 C 語(yǔ)言寫(xiě)的,使用起來(lái)還是要做一點(diǎn)改變,而不只是加個(gè)頭文件。
下載 hiredis
git clone https://github.com/redis/hiredis
編譯 hiredis
make
文件夾將會(huì)有libhiredis.so
準(zhǔn)備 C++ 文件
在 hiredis 的同級(jí)目錄下新建test.cpp,內(nèi)容如下
extern "C"
{
#include "hiredis/hiredis.h"
}
#include <iostream>
int main(int argc, char const *argv[]) {
redisContext* redis = redisConnect("127.0.0.1", 6379);
// 用來(lái)連接redis數(shù)據(jù)庫(kù),參數(shù)為數(shù)據(jù)庫(kù)的ip地址和端口,一般redis數(shù)據(jù)庫(kù)的端口為6379。類(lèi)似的函數(shù)有redisContext* redisConnectWithTimeout(const char *ip, int port, timeval tv)
if( redis == NULL || redis->err ) //當(dāng) redis->err 為真時(shí),redis->errstr 顯示具體的錯(cuò)誤原因
{
std::cout << redis->errstr << '\n';
}
const char * command = "set test yes";
redisReply * reply = (redisReply*) redisCommand(redis, command); // 返回值為void*,強(qiáng)制轉(zhuǎn)換成為redisReply類(lèi)型
if(reply == NULL)
{
std::cout << "error" << '\n';
redisFree(redis);
}
if(reply->type == REDIS_REPLY_STATUS) // REDIS_REPLY_STATUS 返回狀態(tài),可以用 strcasecmp(reply->str,"OK") 判斷是否正確執(zhí)行
{
std::cout << "redis reply is : " << reply->str << '\n';
}
std::cout << "test finish" << '\n';
freeReplyObject(reply); // 釋放 reply 占用的內(nèi)存
redisFree(redis); // 斷開(kāi)連接
return 0;
}
留意最上面的
extern "C" 部分即可
編譯 C++ 程序
g++ test.cpp hiredis/libhiredis.so