文章目录
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版权协议,转载请附上原文出处链接和本声明。