C++ 使用 redis:示例+編譯方法

參考 hiredis/README.md at master · redis/hiredis · GitHub

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容