当前位置: 首页 > news >正文

Redis ubuntu下载Redis的C++客户端

1. 安装 redis-plus-plus

C++ 操作 Redis 的库有很多,这里选择使用 redis-plus-plus,这个库的功能强大,使用简单。

Github 地址:GitHub - sewenew/redis-plus-plus: Redis client written in C++

访问不了Github 地址的可以使用Steam++来加速访问。

 redis-plus-plus 是基于 hiredis 实现的。hiredis 是一个 C 语言实现的 redis 客户端,因此需要先安装 hiredis,直接使用包管理器安装即可。

redis-plus-plus本体,只能编译安装,使用编译安装ubuntu会比centos方便很多

1.1 Ubuntu安装

apt install libhiredis-dev

Ubuntu

安装cmake

apt install cmake

具体步骤:

git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plus

mkdir build

cd build

cmake .. //生成makefile,此处..指向CMakeLists.txt文件所在的目录

make

make install //把刚才的库拷贝到系统目录

2. 编写 HelloWorld

Redis 库最多可以支持到 C++17 版本。(如果是用 Centos,需要注意 gcc/g++ 的版本,看是否支持 C++17。不支持的话,选用 C++11 版本也是可以的)

编译程序时,需要引入的库文件(由于不同系统中安装好的库所在位置会存在差异,因此要注意⽂件路径是否存在。可以用 find 命令来查找库所在的目录):

  1. Redis++ 自己的静态库
  2. hiredis 静态库
  3. 线程库
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <sw/redis++/redis++.h>using std::cout;
using std::endl;
using std::vector;
using std::string;
using std::unordered_map;int main()
{// 创建Redis对象时,需要在构造函数中指定redis服务器的地址和端口 sw::redis::Redis redis("tcp://127.0.0.1:6379");// 调用ping方法,让客户端给服务器发了一个PING,然后服务器就会返回一个PONG,就通过返回值获取到 string result = redis.ping(); // 测试用,可不写std::cout << result << std::endl;redis.set("key", "HelloWorld");// 使用 get 获取到 key 对应的 valueauto value1 = redis.get("key");// optional 可以隐式转成 bool 类型, 可以直接在 if 中判定. 如果是无效元素, 就是返回 falseif (value1){std::cout << value1.value() << std::endl;}return 0;
}

为什么头文件要写成这样,不能直接写redis++吗?

肯定是不行的

编译器会从系统默认路径寻找头文件,而默认路径是/usr/local/include,所以我们要加上sw/redis/redis++.h

如下是我们makefile文件

mytest:mytest.cppg++ -std=c++17 -o $@ $^ /usr/local/lib/libredis++.a /usr/lib/x86_64-linux-gnu/libhiredis.a -pthread.PHONY:clean
clean:rm mytest

依赖的是redis++的静态库,hiredis静态库和线程库,我们要写makefile编译的时候要带上对应的路径。

这里要注意,不是每个人下载好的对应库跟我是一样的,大家可以通过find命令去寻找对应路径

http://www.lryc.cn/news/620193.html

相关文章:

  • 3分钟 Spring AI 实现对话功能
  • 二次筛法Quadratic Sieve因子分解法----C语言实现
  • 【MCP开发】Nodejs+Typescript+pnpm+Studio搭建Mcp服务
  • 每日五个pyecharts可视化图表-line:从入门到精通 (5)
  • 物联网之小白调试网关设备
  • 《算法导论》第 23 章 - 最小生成树
  • PyTorch基础(Numpy与Tensor)
  • 可搜索的 HTML 版本 Emoji 图标大全,可以直接打开网页使用,每个图标可以点击复制,方便使用
  • Mac安装ant
  • WPS文字和Word文档如何选择多个不连续的行、段
  • Date/Calendar/DateFormat/LocalDate
  • Linux中备份的练习
  • element-ui 时间线(timeLine)内容分成左右两侧
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(下篇)
  • 车载软件架构 --- MCU刷写擦除相关疑问?
  • 《红黑树驱动的Map/Set实现:C++高效关联容器全解析》
  • 具有熔断能力和活性探测的服务负载均衡解决方案
  • Linux编程 IO(标准io,文件io,目录io)
  • 机器学习⑤【线性回归(Linear Regression】
  • springboot接口请求参数校验
  • web开发,在线%射击比赛管理%系统开发demo,基于html,css,jquery,python,django,三层mysql数据库
  • 锂电池自动化生产线:智能制造重塑能源产业格局
  • 【完整源码+数据集+部署教程】医学报告图像分割系统源码和数据集:改进yolo11-HGNetV2
  • 深度学习与遥感入门(七)|CNN vs CNN+形态学属性(MP):特征工程到底值不值?
  • 【工具】雀语queyu文件批量下载 文档内容复刻导出
  • Socket 套接字的学习--UDP
  • wps--设置
  • 大模型推理框架vLLM 中的Prompt缓存实现原理
  • GaussDB 权限管理的系统性技术解析与实践指南
  • Windows 系统 上尝试直接运行 .sh(Shell 脚本)文件