Redis C++ API(hiredis)的完整使用教程

Redis(Linux)

1. redis的安装&运行

1.1. 安装

参考官方链接,下载编译最新版redis:

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make

1.2. 命令行启动

本地运行

server:

$ src/redis-server

client:

$ src/redis-cli
redis> PING
PONG
redis> set foo bar
OK
redis> get foo
"bar"

指定ip、端口号、登陆密码运行:

修改安装目录下的redis.conf文件:
字段详细解释

  • daemonize : 是否以守护进程启动
  • port : 指定端口
  • bind 127.0.0.1: 指定绑定ip,不注释掉这句的话其它ip不能访问
  • requirepass : 设置密码,不设不能通过其他ip访问

通过配置文件启动服务:

$ src/redis-server ./redis.conf

通过client访问:

$ src/redis-cli –h [IP地址] –p [端口] -a [密码]

关闭服务

通过客户端关闭:

$ redis> shutdown

2. C++ API

2.1. 安装hiredis

下载、编译、安装hiredis:

$ git clone https://github.com/redis/hiredis
$ cd hiredis
$ make
$ sudo make install

2.2. C++调用

包含hiredis的头文件和动态链接库到项目中,即可调用以下方法来访问数据库

  • redisContext *redisConnect(const char *ip, int port);
  • void *redisCommand(redisContext *c, const char *format, …);
  • void freeReplyObject(void *reply);
  • void redisFree(redisContext *c);

示例代码:

1.建立连接

redisContext* pRedisContext=(redisContext*)redisConnect(ip, port);//建立连接

如果是密码连接,还要在建立连接后输入密码:

reply = (redisReply *)redisCommand(pRedisContext, "AUTH %s", redis_password);//密码访问

2.写数据库

std::string key, value;
...
redisReply *reply;
reply = (redisReply *)redisCommand(redisContext,"SET %s %s", key.c_str(), value.c_str());//写

这里要注意,对于序列化的结构数据,string中保存的是二进制数据,c_str()方法返回的c字符串被二进制0值截断,会造成数据不完整,而hiredis提供%b作为格式化二进制的方法,需要提供起始地址和长度:

reply = (redisReply *)redisCommand(redisContext, "SET %s %b", key.c_str(), value.data(), value.length())//写长byte流

3.读数据库

redisReply *reply;
reply = (redisReply *)redisCommand(redisContext,"GET %s", key.c_str());//读
std::cout<<reply->str;

4.释放指针

释放redisContext:

redisFree(redisContext);

释放reply:

如果不释放reply会导致内存泄漏

freeReplyObject(reply);

版权声明:本文为weixin_44005915原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。