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

 更新时间:2025年02月06日 11:33:52   作者:冧轩在努力  
本文主要介绍了使用redis-plus-plus库连接redis的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、安装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 &lt;&lt; "exists key" &lt;&lt; std::endl &lt;&lt; n &lt;&lt; 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Redis 整数集合的具体使用(intset)

    Redis 整数集合的具体使用(intset)

    对于集合,STL 的 set 相信大家都不陌生,本文主要介绍了整数集合,又称为 intset,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 浅谈为什么单线程的redis那么快

    浅谈为什么单线程的redis那么快

    本文主要介绍了为什么单线程的redis那么快,主要介绍了几点原因,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Redis 哨兵高模式搭建及Java代码配置

    Redis 哨兵高模式搭建及Java代码配置

    这篇文章主要介绍了Redis 哨兵高模式搭建及Java代码配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Redis分布式锁一定要避开的两个坑

    Redis分布式锁一定要避开的两个坑

    这篇文章主要为大家详细介绍了Redis中分布式锁一定要避开的两个坑以及对应的解决方法,文中的示例代码讲解详细,希望对大家有所帮助
    2023-04-04
  • Redis常见限流算法原理及实现

    Redis常见限流算法原理及实现

    这篇文章主要介绍了Redis常见限流算法原理及实现,限流简称流量限速(Rate Limit)是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理
    2022-08-08
  • Redis高并发问题的解决方法

    Redis高并发问题的解决方法

    这篇文章主要介绍了Redis高并发问题的解决办法,具有很好的参考价值,感兴趣的小伙伴们可以参考一下,具体如下:
    2018-05-05
  • Redis 有序集合的使用场景

    Redis 有序集合的使用场景

    在Redis的学习中,有序集合是一种非常实用的数据结构,本文就来介绍一下Redis 有序集合的使用场景,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 基于redis.properties文件的配置及说明介绍

    基于redis.properties文件的配置及说明介绍

    今天小编就为大家分享一篇基于redis.properties文件的配置及说明介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Windows下搭建Redis哨兵集群模式的方法步骤

    Windows下搭建Redis哨兵集群模式的方法步骤

    哨兵模式,是基于主从复制模式,主从复制的优点全都拥有,并且主从可以实现自动切换,故障转移等功能,本文主要介绍了Windows下搭建Redis哨兵集群模式的方法步骤,文中通过图文介绍的非常详细,感兴趣的小伙伴们可以参考一下,需要的朋友可以参考下
    2023-09-09
  • Redis是单线程的吗

    Redis是单线程的吗

    Redis使用单线程的原因就是多线程并不能有效提升Redis的性能,相反可能还会降低性能,所以自然而然使用单线程,本文给大家详细介绍了Redis为什么是单线程的,感兴趣的朋友跟随小编一起看看吧
    2023-06-06

最新评论