一、安装redis-plus-plus
c++ 操作 redis 的库有很多. 此处使⽤ redis-plus-plus,因为这个库的功能强⼤, 使⽤简单
下载地址
1.1安装hiredis
redis-plus-plus 是基于 hiredis 实现的 ,hiredis 是⼀个 c 语⾔实现的 redis 客⼾端 ,因此需要先安装 hiredis. 直接使⽤包管理器安装即可
ubuntu:
sudo apt install libhiredis-dev
centos:
sudo yum install hiredis-devel.x86_64
1.2编译安装redis-plus-plus
通过指令下载 redis-plus-plus 源码
git clone https://github.com/sewenew/redis-plus-plus.git
如果连接不上可以点击上面的下载地址,进行下载压缩包:
- 点击code
- 点击download zip下载
将下载的压缩包解压一下:
unzip 文件名
ubuntu可直接使用cmake构建
#进入解压后获取到的文件夹 cd redis-plus-plus #创建build文件夹且进入 mkdir build && cd build #编译生成makefile文件 cmake .. #编译源代码 make #安装 sudo make install
如果是centos,需要注意一下cmake版本,系统自带的cmake版本较低,需要安装cmake3
sudo yum install cmake3 -y
然后使⽤ cmake3 构建项⽬ ,构建步骤和上面的构建步骤一致
安装成功后,会在 /usr/local/include/ 中多出 sw ⽬录, 并且内部包含 redis-plus-plus 的⼀系列头⽂件. 会在 /usr/local/lib/ 中多出⼀系列 libredis 库⽂件
二、redis的连接使用
详细的api:
github 地址
源码结构:
. ├── makefile └── src ├── generic.cc ├── list.cc ├── set.cc └── string.cc 1 directory, 5 files
使用makefile编译时需要注意:由于不同系统中, 安装好的库所在位置会存在差异. 因此要注意⽂件路径是否存在
test: test.cc g++ -std=c++17 -o $@ $^ /usr/local/lib/libredis++.a /lib/x86_64-linux-gnu/libhiredis.a -pthread
2.1创建redis对象
//头文件根据实际情况,可能路径不同 #include<iostream> #include<vector> #include<string> #include<hiredis/hiredis.h> #include<sw/redis++/redis.h> int main(){ redis redis("tcp://127.0.0.1:6379");//传入url return 0; }
2.2向redis中添加元素
一次添加单个元素
//添加元素 std::string key = "key"; std::string value = "hello"; bool b = redis.set(key, value); //b = redis.set("mykey", "world", std::chrono::seconds(0),sw::redis::updatetype::exist); //b = redis.set("mykey", "world", std::chrono::milliseconds(0), sw::redis::updatetype::not_exist); std::cout << "set " << key << value << std::endl; if(b){ std::cout << " set ok" << std::endl; }else{ std::cout << "set failed" << std::endl; }
一次添加多个元素
//批量添加元素 std::vector<std::pair<std::string,std::string>> v = {{"key","hello",},{"key1","world"},{"key2", "redis"}}; redis.mset(v.begin(),v.end());
2.3判断元素是否存在
//判断元素是否存在 std::string key = "key"; long long n = redis.exists(key); std::cout << "exists key" << std::endl << n << std::endl;
2.4获取元素
一次获取一个元素
//获取元素 sw::redis::optionalstring ret = redis.get(key); std::cout << "redis<<< " << "get " << key << std::endl; if(ret){ std::cout << *ret << std::endl; }else{ std::cout << "nil" << std::endl; }
一次获取多个元素
//批量获取元素 std::vector<sw::redis::optionalstring> values; //创建插入迭代器 //std::insert_iterator<std::vector<sw::redis::optionalstring>> ret = std::inserter(values, values.begin()); std::insert_iterator<std::vector<sw::redis::optionalstring>> ni(values,values.begin()); redis.mget({"key", "key1", "key2"}, ni); //输出获取到的元素 for(auto e : values){ std::cout << *e << std::endl; }
2.5设置获取过期时间
设置过期时间:
//设置过期时间 std::string key = "key"; bool b = redis.expire(key,std::chrono::seconds(10)); if(b == false)std::cout << "expire failed" << std::endl;
获取过期时间:
//获取过期时间 long long s = redis.ttl(key); std::cout << key << "的过期时间:" << s << std::endl;
2.6获取类型
//获取当前key的类型 std::string type = redis.type(key); std::cout << key << "类型为:" << type << std::endl;
2.7 删除当前数据库
redis.flushdb();
到此这篇关于使用redis-plus-plus库连接redis的实现方法的文章就介绍到这了,更多相关redis-plus-plus库连接redis内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论