• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    使用redis-plus-plus库连接redis的实现方法

    发布者: Error | 发布时间: 2025-6-19 12:42| 查看数: 89| 评论数: 0|帖子模式

    一、安装redis-plus-plus

    C++ 操作 redis 的库有很多. 此处使⽤ redis-plus-plus,因为这个库的功能强⼤, 使⽤简单
    下载地址

    1.1安装hiredis

    redis-plus-plus 是基于 hiredis 实现的 ,hiredis 是⼀个 C 语⾔实现的 redis 客⼾端 ,因此需要先安装 hiredis. 直接使⽤包管理器安装即可
    Ubuntu:
    1. sudo apt install libhiredis-dev
    复制代码
    Centos:
    1. sudo yum install hiredis-devel.x86_64
    复制代码
    1.2编译安装redis-plus-plus

    通过指令下载 redis-plus-plus 源码
    1. git clone https://github.com/sewenew/redis-plus-plus.git
    复制代码
    如果连接不上可以点击上面的下载地址,进行下载压缩包:

    • 点击Code
    • 点击Download ZIP下载

    将下载的压缩包解压一下:
    1. unzip 文件名
    复制代码
    Ubuntu可直接使用cmake构建
    1. #进入解压后获取到的文件夹
    2. cd redis-plus-plus
    3. #创建build文件夹且进入
    4. mkdir build && cd build
    5. #编译生成makefile文件
    6. cmake ..
    7. #编译源代码
    8. make
    9. #安装
    10. sudo make install
    复制代码
    如果是Centos,需要注意一下cmake版本,系统自带的cmake版本较低,需要安装cmake3
    1. sudo yum install cmake3 -y
    复制代码
    然后使⽤ cmake3 构建项⽬ ,构建步骤和上面的构建步骤一致
    安装成功后,会在 /usr/local/include/ 中多出 sw ⽬录, 并且内部包含 redis-plus-plus 的⼀系列头⽂件. 会在 /usr/local/lib/ 中多出⼀系列 libredis 库⽂件

    二、redis的连接使用

    详细的API:
    Github 地址
    源码结构:
    1. .
    2. ├── Makefile
    3. └── src
    4.     ├── generic.cc
    5.     ├── list.cc
    6.     ├── set.cc
    7.     └── string.cc
    8. 1 directory, 5 files
    复制代码
    使用makefile编译时需要注意:由于不同系统中, 安装好的库所在位置会存在差异. 因此要注意⽂件路径是否存在
    1. test: test.cc
    2. g++ -std=c++17 -o $@ $^ /usr/local/lib/libredis++.a /lib/x86_64-linux-gnu/libhiredis.a -pthread
    复制代码
    2.1创建redis对象
    1. //头文件根据实际情况,可能路径不同
    2. #include<iostream>
    3. #include<vector>
    4. #include<string>
    5. #include<hiredis/hiredis.h>
    6. #include<sw/redis++/redis.h>
    7. int main(){

    8.     Redis redis("tcp://127.0.0.1:6379");//传入url
    9.     return 0;
    10. }
    复制代码
    2.2向redis中添加元素

    一次添加单个元素
    1. //添加元素
    2. std::string key = "key";
    3. std::string value = "hello";

    4. bool b = redis.set(key, value);
    5. //b = redis.set("mykey", "World", std::chrono::seconds(0),sw::redis::UpdateType::EXIST);
    6. //b = redis.set("mykey", "World", std::chrono::milliseconds(0), sw::redis::UpdateType::NOT_EXIST);
    7. std::cout << "set " << key << value << std::endl;
    8. if(b){
    9.     std::cout << " set OK" << std::endl;
    10. }else{
    11.     std::cout << "set failed" << std::endl;
    12. }
    复制代码
    一次添加多个元素
    1. //批量添加元素
    2. std::vector<std::pair<std::string,std::string>> v = {{"key","hello",},{"key1","world"},{"key2", "redis"}};
    3. redis.mset(v.begin(),v.end());
    复制代码
    2.3判断元素是否存在
    1. //判断元素是否存在
    2. std::string key = "key";
    3. long long n = redis.exists(key);
    4. std::cout &lt;&lt; "exists key" &lt;&lt; std::endl &lt;&lt; n &lt;&lt; std::endl;
    复制代码
    2.4获取元素

    一次获取一个元素
    1. //获取元素
    2. sw::redis::OptionalString ret = redis.get(key);
    3. std::cout << "redis<<< " << "get " << key << std::endl;
    4. if(ret){
    5.     std::cout << *ret << std::endl;
    6. }else{
    7.     std::cout << "nil" << std::endl;
    8. }
    复制代码
    一次获取多个元素
    1. //批量获取元素
    2. std::vector<sw::redis::OptionalString> values;
    3. //创建插入迭代器
    4. //std::insert_iterator<std::vector<sw::redis::OptionalString>> ret = std::inserter(values, values.begin());
    5. std::insert_iterator<std::vector<sw::redis::OptionalString>> ni(values,values.begin());

    6. redis.mget({"key", "key1", "key2"}, ni);

    7. //输出获取到的元素
    8. for(auto e : values){
    9.     std::cout << *e << std::endl;
    10. }
    复制代码
    2.5设置获取过期时间

    设置过期时间:
    1. //设置过期时间
    2. std::string key = "key";
    3. bool b = redis.expire(key,std::chrono::seconds(10));
    4. if(b == false)std::cout << "expire failed" << std::endl;
    复制代码
    获取过期时间:
    1. //获取过期时间
    2. long long s = redis.ttl(key);
    3. std::cout << key << "的过期时间:" << s << std::endl;
    复制代码
    2.6获取类型
    1. //获取当前key的类型
    2. std::string type = redis.type(key);
    3. std::cout << key << "类型为:" << type << std::endl;
    复制代码
    2.7 删除当前数据库
    1. redis.flushdb();
    复制代码
    到此这篇关于使用redis-plus-plus库连接redis的实现方法的文章就介绍到这了,更多相关redis-plus-plus库连接redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/335218mgm.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表