前言

下面主要是对于两种环境安装、配置、使用C++的第三方包(redis++),对于其他的第三方库,也可以使用类似的方法进行类比安装。

且大多数的第三方库都可以利用工具一键安装或手动编译安装。


Windows

要在Windows系统上快速安装和使用Redis++,一般有手动编译安装与通过包管理器一键安装。下面一一介绍:

方法一:使用vcpkg安装(推荐)

简单介绍一下,vcpkg 是一个跨平台的开源 C/C++ 库管理工具,可以简化 C++ 开发过程中对第三方库的获取、构建和管理。

下面的命令执行时,需注意主机可以正常连接 github。

  1. 通过命令提示行(cmd)或Powershell 安装vcpkg

    • 进入想要安装的文件夹后,执行下面的命令。
    git clone https://github.com/microsoft/vcpkg
    .\vcpkg\bootstrap-vcpkg.bat
    
  2. 安装Redis++

    • 安装vcpkg后,在vcpkg所在路径下继续执行:
    .\vcpkg\vcpkg install redis-plus-plus
    
  3. 安装完毕后,便可以使用,下面写一个简单的示例进行演示:

示例

首先确保当前环境下:

  • 已按照之前的步骤成功安装Redis++ (通过vcpkg)
  • 本地已安装并运行Redis服务器 (默认端口6379)
  • 已安装CMake和C++17兼容的编译器(如MSVC 2019/2022)
  1. 项目结构如下:

    redis_demo/
    ├── CMakeLists.txt    # CMake配置文件
    ├── src/
    │   └── main.cpp      # 主程序文件
    └── cmake/            # (可选)CMake模块文件夹
    
  2. CMakeLists.txt 可以参考下面的内容进行编写:

cmake_minimum_required(VERSION 3.15)
project(redis_demo)# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 指定vcpkg工具链(根据vcpkg.cmake的实际路径调整)
set(CMAKE_TOOLCHAIN_FILE "./vcpkg.cmake")# 查找Redis++库
find_package(redis++ CONFIG REQUIRED)# 添加可执行文件(此处用的是main.cpp)
add_executable(${PROJECT_NAME} src/main.cpp) # 链接Redis++库
target_link_libraries(${PROJECT_NAME} PRIVATE redis++::redis++)
  1. 编写一个测试连接代码:
#include <sw/redis++/redis++.h>
#include <iostream>
#include <string>using namespace sw::redis;
using namespace std;int main() {try {// 1. 创建Redis连接// 格式: tcp://[用户名:密码@]主机[:端口][/数据库]// auto redis = Redis("tcp://127.0.0.1:6379");// 这里使用 ConnectionOptions 进行连接sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";   // Redis服务器地址opts.port = 6379;          // Redis端口opts.password = "123456";  // 密码(如果没有密码可以省略)// opts.db = 0;            // 可选:选择数据库(默认0)sw::redis::Redis redis(opts);  // 正确构造Redis对象cout << "成功连接到Redis服务器!" << endl;// 2. 设置键值redis.set("my_key", "Hello Redis++");// 3. 获取值auto val = redis.get("my_key");if (val) {cout << "获取的值: " << *val << endl;} else {cout << "键不存在" << endl;}// 4. 检查键是否存在if (redis.exists("my_key")) {cout << "键存在" << endl;}// 5. 删除键redis.del("my_key");} catch (const Error &e) {cerr << "Redis错误: " << e.what() << endl;return 1;} catch (const exception &e) {cerr << "标准错误: " << e.what() << endl;return 1;}return 0;
}
  1. 执行cmake,编译项目:
    • 可以在命令行中执行:
      1. 生成构建系统:
      cmake -B build -DCMAKE_TOOLCHAIN_FILE=D:/Coder/tools/vcpkg/scripts/buildsystems/vcpkg.cmake
      
      1. 编译项目:
      cmake --build build --config Release
      
      1. 运行程序:
      ./build/Release/redis_demo.exe
      
    • 也可以在vs下进行运行:
      1. 用vs打开项目后,会生成CMakeLists.json文件,打开后进行配置vcpkg.cmake的路径即可执行:
        在这里插入图片描述
      2. 此时执行命令,获取结果:
        在这里插入图片描述

方法二:使用NuGet(Visual Studio用户)

首先确保vs下安装了 NuGet 包管理工具:

在这里插入图片描述

  1. 在Visual Studio中打开您的项目
  2. 右键点击项目 → “管理NuGet程序包”
  3. 搜索 “redis-plus-plus” 并安装

在这里插入图片描述

或去nuget官网直接下载nuget 官网
在这里插入图片描述

方法三:手动编译安装

  1. 下载源码

    git clone https://github.com/sewenew/redis-plus-plus.git
    cd redis-plus-plus
    
  2. 编译安装

    mkdir build
    cd build
    cmake ..
    cmake --build . --config Release
    cmake --install .
    
  3. 设置头文件和库文件路径

    Redis++默认会安装到C:\Program Files (x86)\redis-plus-plus,包含:

    • 头文件路径:include\
    • 库文件路径:lib\bin\(动态库)

    假设使用的是默认安装路径,在项目中需要配置:

    • 包含路径:添加 C:\Program Files (x86)\redis-plus-plus\include
    • 库路径:添加 C:\Program Files (x86)\redis-plus-plus\lib
  4. 链接库文件

    根据编译类型选择链接的库:

    • Debug模式redis++d.lib(静态库)或 redis++d.dll(动态库)
    • Release模式redis++.libredis++.dll

    在CMake中配置示例:

    find_package(hiredis REQUIRED)  # Redis++依赖hiredis
    find_package(redis++ REQUIRED)target_include_directories(your_target PRIVATE "C:/Program Files (x86)/redis-plus-plus/include")
    target_link_libraries(your_target PRIVATE redis++::redis++)
    

代码示例

不管使用哪种方式安装完成后,都可以通过下面的代码进行测试:

#include <sw/redis++/redis++.h>
#include <iostream>
#include <string>using namespace sw::redis;
using namespace std;int main() {try {// 1. 创建Redis连接// 格式: tcp://[用户名:密码@]主机[:端口][/数据库]// auto redis = Redis("tcp://127.0.0.1:6379");// 这里使用 ConnectionOptions 进行连接sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";   // Redis服务器地址opts.port = 6379;          // Redis端口opts.password = "123456";  // 密码(如果没有密码可以省略)// opts.db = 0;            // 可选:选择数据库(默认0)sw::redis::Redis redis(opts);  // 正确构造Redis对象cout << "成功连接到Redis服务器!" << endl;// 2. 设置键值redis.set("my_key", "Hello Redis++");// 3. 获取值auto val = redis.get("my_key");if (val) {cout << "获取的值: " << *val << endl;} else {cout << "键不存在" << endl;}// 4. 检查键是否存在if (redis.exists("my_key")) {cout << "键存在" << endl;}// 5. 删除键redis.del("my_key");} catch (const Error &e) {cerr << "Redis错误: " << e.what() << endl;return 1;} catch (const exception &e) {cerr << "标准错误: " << e.what() << endl;return 1;}return 0;
}

注意事项

  1. 使用Redis++前需要先安装并运行Redis服务器
  2. 确保编译器支持C++17标准
  3. Redis++依赖于hiredis库,使用vcpkg或NuGet安装时会自动解决此依赖

卸载方法

方法一:通过 vcpkg 安装的卸载

  1. 使用 vcpkg 卸载
# 进入vcpkg目录
cd D:\Coder\tools\vcpkg# 卸载redis-plus-plus
.\vcpkg remove redis-plus-plus# 如果需要,同时卸载hiredis依赖
.\vcpkg remove hiredis
  1. 完全清理 vcpkg

如果想彻底移除 vcpkg 安装的所有包:

# 删除vcpkg安装的所有包
.\vcpkg remove --outdated --recurse# 或者直接删除整个vcpkg目录
rmdir /s /q D:\Coder\tools\vcpkg

方法二:通过 NuGet 安装的卸载

  1. 在 Visual Studio 中卸载

    • 打开项目
    • 右键点击项目 → “管理 NuGet 程序包”
    • 切换到"已安装"选项卡
    • 找到 “redis-plus-plus” 并点击"卸载"
  2. 手动清理

    NuGet 包通常安装在项目目录的 packages 文件夹中,可以手动删除:

    rmdir /s /q .\packages\redis-plus-plus.*
    

方法三:手动编译安装的卸载

  1. 卸载已安装的文件

    如果使用了 cmake --install . 安装到默认位置:

    # 删除头文件
    rmdir /s /q "C:\Program Files (x86)\redis-plus-plus\include\sw"# 删除库文件
    del "C:\Program Files (x86)\redis-plus-plus\lib\redis++.lib"
    del "C:\Program Files (x86)\redis-plus-plus\bin\redis++.dll"# 删除CMake配置文件
    rmdir /s /q "C:\Program Files (x86)\redis-plus-plus\lib\cmake\redis++"
    
  2. 清理环境变量

    如果手动添加过环境变量:

    1. 打开"系统属性" → “高级” → “环境变量”
    2. 在"系统变量"中删除或修改:
      • PATH 中相关的 Redis++ 路径
      • 任何自定义的 REDISPP_INCLUDEREDISPP_LIB 变量

验证卸载是否彻底

  1. 检查残留文件

    在命令提示框搜索系统中可能残留的文件:

    where /R C:\ redis++.h
    where /R C:\ redis++.lib
    where /R C:\ redis++.dll
    
  2. 检查注册表

    Win+R 输入 regedit,搜索 “redis-plus-plus” 或 “redis++” 删除相关项

  3. 最终清理后验证

    • 尝试编译一个使用 Redis++ 的项目,应该出现"找不到头文件"的错误
    • 检查程序运行时是否还会加载 redis++.dll(使用 Process Explorer 工具)

Linux(Ubuntu22.04)

以 Ubuntu 22.04 系统为例,下面是安装和使用 Redis++ 的详细步骤,包含多种安装方式和验证方法。

方法一:使用 apt 安装(推荐)

  1. 安装依赖项
sudo apt update
sudo apt install -y git cmake g++ make libhiredis-dev libssl-dev
  1. 安装 Redis++
sudo apt install -y libredis++-dev libredis++1
  1. 验证安装
# 检查头文件
ls /usr/include/sw/redis++/redis++.h# 检查库文件
ls /usr/lib/x86_64-linux-gnu/libredis++.so

方法二:从源码编译安装

  1. 安装编译依赖
sudo apt update
sudo apt install -y git cmake g++ make libhiredis-dev libssl-dev
  1. 下载源码
git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plus
  1. 编译安装
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo make install
  1. 配置动态链接库路径
sudo ldconfig

方法三:使用 vcpkg 安装

  1. 安装 vcpkg
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
  1. 安装 Redis++
./vcpkg/vcpkg install redis-plus-plus
  1. 集成到 CMake 项目

在 CMakeLists.txt 中添加:

set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake")
find_package(redis++ CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE redis++::redis++)

代码示例

同理,安装配置完redis++后,编写测试文件,检查是否安装成功:

  1. 创建测试文件 test_redis.cpp
#include <sw/redis++/redis++.h>
#include <iostream>int main() {try {// 连接选项sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";opts.port = 6379;// opts.password = "your_password";  // 如果有密码// 创建Redis连接sw::redis::Redis redis(opts);std::cout << "成功连接到Redis服务器!" << std::endl;// 设置键值redis.set("test_key", "Hello from Ubuntu");// 获取值auto val = redis.get("test_key");if (val) {std::cout << "获取的值: " << *val << std::endl;}return 0;} catch (const std::exception &e) {std::cerr << "错误: " << e.what() << std::endl;return 1;}
}
  1. 编译运行

    • 使用 apt 或源码安装的编译命令:
    g++ -std=c++17 test_redis.cpp -o test_redis -lredis++ -lhiredis
    ./test_redis
    
    • 使用 vcpkg 安装的编译命令:
    g++ -std=c++17 -I/path/to/vcpkg/installed/x64-linux/include test_redis.cpp \-L/path/to/vcpkg/installed/x64-linux/lib -lredis++ -lhiredis \-o test_redis
    ./test_redis
    

常见问题解决

  1. 找不到 redis++ 库
sudo ldconfig  # 更新库缓存
  1. 连接 Redis 失败

    • 确保 Redis 服务器已运行:
    sudo systemctl status redis-server
    

    如果没有安装 Redis 服务器(不至于),用下面的语句进行安装:

    sudo apt install -y redis-server
    sudo systemctl start redis-server
    
  2. 编译错误:C++17 不支持

    • 确保使用支持 C++17 的编译器:
    g++ --version  # 应该 >= 7.0
    

卸载方法

  1. 从 apt 安装的卸载
sudo apt remove --purge libredis++-dev libredis++1
  1. 从源码安装的卸载
# 进入编译目录
cd redis-plus-plus/build
sudo make uninstall

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85165.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85165.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85165.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot入门之路(二)

系列文章目录 springboot入门之路&#xff08;一&#xff09;连续的学习渐进之路。阅读点击&#xff1a;springboot入门之路(一) 文章目录 系列文章目录3.springboot配置及注意事项3.1继承starter parent3.2使用没有父POM的Spring Boot3.3配置java的编译的版本3.4使用"de…

【开源解析】基于Python+Qt打造智能应用时长统计工具 - 你的数字生活分析师

&#x1f4ca; 【开源解析】基于PythonQt打造智能应用时长统计工具 - 你的数字生活分析师 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热情源自…

PHP语法基础篇(三):类型转换与常量

"在完成PHP输出函数和字符串操作的学习后&#xff0c;本篇笔记将记录 类型转换和 常量应用的学习过程。作为语法基础篇的第三部分&#xff0c;将重点关注&#xff1a; 类型转换数学函数常量定义&#xff1a;define() 与const 的使用差异魔术常量应用&#xff1a;__LINE__ …

Linux lsof 命令详解+实例

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

【Cobalt Strike手册】客户端界面功能

工具栏 顶部的工具栏提供了快速访问的功能&#xff0c;这些图片的功能从左到右功能以此如下表 创建新的连接断开当前的TeamServerListeners监听器列表以图形化展示表格形式展示表格展示目标管理Web服务查看获取到的认证信息查看下载的文件查看键盘记录查看截屏记录 图形化会话…

FastAPI本地文档的定制技巧

磨刀不误砍柴工&#xff0c;一份清晰的API文档能让前后端协作效率翻倍——源滚滚如是说 在前后端分离开发的今天&#xff0c;接口文档的质量直接决定了团队协作的效率。作为Python领域最受瞩目的现代Web框架&#xff0c;FastAPI最大的亮点之一是其自动化交互式文档功能。但很多…

Python 标准库概览

Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块: os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。 sys 模块:sys 模块提供…

AI大模型:(二)4.1 文生图(Text-to-Image)模型发展史

目录 1.介绍 2.发展历史 2.1.早期探索阶段(1980-2014 年) 2.1.1.卷积神经网络(CNN) 2.1.2.生成对抗网络(GAN)的提出 2.2.GAN主导时代(2015-2018 年) 2.2.1.高分辨率GAN的突破 2.2.2.文本-图像对齐的改进 2.3. Diffusion革命(2021–2022) 2.3.1.扩散模型(D…

vue3实现轮播渲染多张图每张进行放大缩小拖拽功能互不影响

vue3实现轮播渲染多张图每张进行放大缩小拖拽功能互不影响 1.以vue3中el-carousel轮播插件为例 <div class"pic_view"><el-carousel height"100vh" :autoplay"false" ref"carouselRef" change"handleCarouselChange&qu…

traceroute 使用说明

1、概述 Traceroute&#xff08;Windows 系统中为 tracert&#xff09;是一种网络诊断工具&#xff0c;用于跟踪数据包从本地设备到目标主机的传输路径&#xff0c;并显示沿途经过的每一跳&#xff08;路由器&#xff09;的延迟和 IP 地址。它通过发送不同 TTL&#xff08;生存…

用idea操作git缓存区回退、本地库回退、远程库回退

前言 使用idea软件操作git非常人性化和方便。 但是如果我的代码使用git提交之后,我想回到以前的版本,此时需要进行git的版本回退。 提交代码分为提交到缓存区、本地库、远程库这3个过程。 下面我将介绍每个阶段的提交对应的回退方法。 本篇文章是掌握git和使用idea操作git…

webpack+vite前端构建工具 - 3webpack处理js

3 webpack处理js webpack的核心——处理js文件&#xff0c;将模块化的代码打包。具体操作如下 es6转化&#xff08;为兼容老浏览器&#xff0c;将es6转化为es5&#xff09; babel-loader 代码规范&#xff08;例如空格&#xff0c;缩进等代码风格规范&#xff09; eslint 代码…

Nginx转发中相对路径资源302问题的分析与解决

Nginx转发中相对路径资源302问题的分析与解决 典型案例&#xff1a;后端页面引入./test.css的302问题 问题场景 假设我们有一个后端服务&#xff0c;其页面中通过相对路径引入了CSS文件&#xff1a; <!-- 后端页面代码 --> <link rel"stylesheet" href&…

Vue3 + TypeScript合并两个列表到目标列表,并且进行排序,数组合并、集合合并、列表合并、list合并

在Vue 3 TypeScript中合并并排序两个列表&#xff0c;可以通过以下步骤实现&#xff1a; 解决方案代码 vue 复制 下载 <script setup lang"ts"> import { ref, computed } from vue;// 定义列表项类型 interface ListItem {id: number;name: string;valu…

Python-教程

1 需求 2 接口 3 示例 4 参考资料 Python 教程 — Python 3.13.5 文档

Excel数据导出小记

文章目录 前言一、DataTable >EXCEL二、DBReader >Excel &#xff08;NPOI&#xff09;三、分页查询 DbReader>Excel (MiniExcel)总结&#xff1a; 前言 最近经历了一次数据量比较大的导出&#xff0c;也做了各种优化尝试&#xff0c;这里稍记录一下 一、DataTable …

深入理解链表数据结构:从Java LinkedList到自定义实现

引言 链表作为基础数据结构之一&#xff0c;在Java集合框架中以LinkedList的形式提供。本文将深入分析Java原生LinkedList的实现机制&#xff0c;并介绍我自定义实现的MyLinkedList&#xff0c;最后对比两者的设计差异与实现特点。 Java原生LinkedList解析 基本结构 Java的…

【深度学习】卷积神经网络(CNN):计算机视觉的革命性引擎

卷积神经网络&#xff08;CNN&#xff09;&#xff1a;计算机视觉的革命性引擎 一、算法背景&#xff1a;视觉智能的进化之路1.1 传统视觉处理的困境1.2 神经科学的启示 二、算法理论&#xff1a;CNN的核心架构2.1 基础组成单元卷积层&#xff1a;特征提取引擎池化层&#xff1…

使用@SpringJUnitConfig注解开发遇到的空指针问题

Spring测试中的版本陷阱&#xff1a;SpringJUnitConfig与JUnit版本兼容性深度解析 一个看似简单的空指针异常&#xff0c;背后可能隐藏着JUnit版本不匹配的“幽灵”。 一、SpringJUnitConfig&#xff1a;Spring与JUnit 5的桥梁 SpringJUnitConfig是Spring TestContext框架为**…

[2025CVPR]AdcSR:一种高效实世界图像超分辨率的对抗扩散压缩方法

目录 1. 背景与挑战 2. AdcSR模型概述 2.1 模型架构 2.2 训练策略 3. 公式与原理 4. 创新点 5. 实验与结果 5.1 实验设置 5.2 结果对比 5.3 消融实验 6. 结论 在计算机视觉领域&#xff0c;图像超分辨率&#xff08;Image Super-Resolution, ISR&#xff09;一直是一…