C++ 使用 redis

Lastest updated on September 17, 2017

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

C++ 中使用 redis 可以用 hiredis 完成,但是 hiredis 是用 C 语言写的,使用起来还是要做一点改变,而不只是加个头文件。

下载 hiredis

git clone https://github.com/redis/hiredis

编译 hiredis

make

文件夹将会有libhiredis.so

准备 C++ 文件

在 hiredis 的同级目录下新建test.cpp,内容如下

extern "C"
{
  #include "hiredis/hiredis.h"
}

#include <iostream>
int main(int argc, char const *argv[]) {
  redisContext* redis = redisConnect("127.0.0.1", 6379);
  // 用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379。类似的函数有redisContext* redisConnectWithTimeout(const char *ip, int port, timeval tv) 
  if( redis == NULL || redis->err ) //当 redis->err 为真时,redis->errstr 显示具体的错误原因
  {
    std::cout << redis->errstr << '\n';
  }
  const char * command = "set test yes";
  redisReply * reply = (redisReply*) redisCommand(redis, command); //  返回值为void*,强制转换成为redisReply类型
  if(reply == NULL)
  {
    std::cout << "error" << '\n';
    redisFree(redis);
  }
  if(reply->type == REDIS_REPLY_STATUS) // REDIS_REPLY_STATUS 返回状态,可以用 strcasecmp(reply->str,"OK") 判断是否正确执行
  {
    std::cout << "redis reply is : " << reply->str << '\n';
  }
  std::cout << "test finish" << '\n';
  freeReplyObject(reply); // 释放 reply 占用的内存
  redisFree(redis); // 断开连接
  return 0;
}

留意最上面的

extern "C" 部分即可

编译 C++ 程序

g++ test.cpp hiredis/libhiredis.so