【Redis】Ubuntu22.04安装redis++

文章目录

  • 前言
  • [1. 安装 hiredis](#1. 安装 hiredis)
  • [2. 下载redis-plus-plus源码](#2. 下载redis-plus-plus源码)
  • [3. 编译/安装](#3. 编译/安装)
  • [4. 程序连接Redis服务器](#4. 程序连接Redis服务器)

前言

Redis 是一款强大的中间件。我们平常在开发的过程中使用 Redis 通常是通过我们自定义的客服端去访问 Redis 的服务器。所幸,Redis 采用的应用层协议是开源的,所以这也使得业界很多大佬已经开发出来相当多的连接 Redis 服务器的开源方法了。

这篇文章主要介绍如何在 Ubuntu 环境下安装 redis-plus-plus

下面的操作建议拥有管理员权限

1. 安装 hiredis

redis-plus-plus 是依赖于hiredis 的。hiredis是一个基于C语言实现的 redis 客服端。因此我们需要先安装 hiredis。我们之间使用包管理器安装即可。

bash 复制代码
apt install libhiredis-dev

2. 下载redis-plus-plus源码

我们之间在命令行上 git clone 即可

如果没有 git 工具的小伙伴直接使用 apt-get 下载即可。

bash 复制代码
 git clone https://github.com/sewenew/redis-plus-plus.git
  • 下载完成之后:

3. 编译/安装

  1. 进入目录 redis-plus-plus
bash 复制代码
cd redis-plus-plus
  1. 建议创建一个目录 build(该目的是为了将编译文件和源文件分离,避免污染)
bash 复制代码
mkdir build
cd build
  1. 使用 cmake 创建 makefile
bash 复制代码
cmake ..
  • 结果:

  1. 使用 make 编译
bash 复制代码
make
  • 等待编译完成 100% 即可。

  1. 安装库路径
bash 复制代码
make install

在我们编译完成之后,当前下面就有很多的动静态库文件,我们需要安装到系统默认路径下面:

所以采用上面指令。

  1. 检查一下,系统路径下面是否有了 redis++
bash 复制代码
find /usr/local/include/ -name "*redis*"
  • 如下图:

    如果找到了说明应该是安装成功了!

我们还需要找到两个比较重要的库:

  • 后面形成可执行的时候需要指明

4. 程序连接Redis服务器

cpp 复制代码
#include <iostream>
#include <string>
#include <sw/redis++/redis++.h>

int main() {
    // 创建 Redis 对象的时候, 需要在构造函数中, 指定 redis 服务器的地址和端口. 
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    // 调用 ping 方法, 让客户端给服务器发了一个 PING, 然后服务器就会返回一个 PONG. 就通过 返回值 获取到. 
    std::string result = redis.ping();
    std::cout << result << std::endl;
    return 0;
}
bash 复制代码
g++ -o myhello hello.cc -std=c++17 -lpthread /usr/local/lib/libredis++.a /usr/lib/x86_64-linux-gnu/libhiredis.a
  • 我们采用如上的方式进行编译,得到结果:

    说明我们的 redis++ 就已经能够正常使用了!

后面的两个都是为了给 ld(链接器)指明我们的方式的实现位置。为了能够不带有路径的编译,我们可以在系统路径下建立软连接

bash 复制代码
sudo ln -s /usr/local/lib/libredis++.a /usr/lib/libredis++.a
sudo ln -s /usr/lib/x86_64-linux-gnu/libhiredis.a /usr/lib/libhiredis.a

后面的编译,我们只需要指定链接的库是谁即可:

bash 复制代码
g++ -o myhello hello.cc -std=c++17 -lpthread -lredis++ -lhiredis

完。

相关推荐
剩下了什么3 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥4 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉4 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变4 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
山岚的运维笔记6 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里7 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科7 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦7 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
indexsunny7 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
晚霞的不甘8 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d