在 Ubuntu 上安装和配置 Redis

news/2025/1/15 6:09:38/

在 Ubuntu 上安装和配置 Redis,并使用发布-订阅(Pub/Sub)功能,可以按照以下步骤进行:

一、安装 Redis

1. 更新包列表

首先,更新本地的包列表以确保获取到最新的软件包信息:

sudo apt update

2. 安装 Redis

使用 apt 包管理器安装 Redis:

sudo apt install redis-server

3. 验证安装

安装完成后,可以通过以下命令检查 Redis 的运行状态:

sudo systemctl status redis

如果 Redis 正在运行,输出中会显示 active (running)

二、配置 Redis

Redis 的主要配置文件位于 /etc/redis/redis.conf。你可以根据需要进行修改。

1. 编辑配置文件

使用你喜欢的文本编辑器(如 nano)编辑配置文件:

sudo nano /etc/redis/redis.conf

2. 常见配置选项

  • 持久化设置

    • 默认情况下,Redis 使用 RDB 快照持久化。你可以根据需求启用或禁用。
  • 绑定地址和端口

    • 默认绑定到 127.0.0.1,如果需要远程访问,可以修改 bind 参数,但需注意安全性。
  • 设置密码

    • 为了增强安全性,可以设置访问密码。在配置文件中取消注释并设置 requirepass
      requirepass yourpassword
      
  • 后台运行

    • 默认情况下,Redis 以后台模式运行。确保 daemonize 设置为 yes
      daemonize yes
      

3. 重新启动 Redis 服务

在修改配置文件后,重新启动 Redis 服务以应用更改:

sudo systemctl restart redis

4. 设置开机自启

确保 Redis 在系统启动时自动启动:

sudo systemctl enable redis

三、测试 Redis 安装

使用 redis-cli 工具连接到 Redis 服务器并测试:

redis-cli

redis-cli 提示符下输入:

redis">PING

如果一切正常,Redis 会回复:

redis">PONG

四、Redis 发布-订阅(Pub/Sub)使用指南

Redis 的发布-订阅功能允许消息在客户端之间实时传递。以下是如何使用 redis-cli 进行发布和订阅的示例。

1. 订阅频道

打开一个终端窗口,运行以下命令订阅一个频道(例如 news):

redis-cli

redis-cli 提示符下输入:

redis">SUBSCRIBE news

你将看到类似如下的输出,表示已成功订阅:

redis">1) "subscribe"
2) "news"
3) (integer) 1

此终端将持续监听 news 频道的消息。

2. 发布消息

打开另一个终端窗口,运行以下命令发布消息到 news 频道:

redis-cli

redis-cli 提示符下输入:

redis">PUBLISH news "Hello, Redis Pub/Sub!"

执行后,你将在订阅 news 频道的终端看到如下输出:

redis">(integer) 1

而订阅终端将显示:

redis">1) "message"
2) "news"
3) "Hello, Redis Pub/Sub!"

3. 示例:多个频道和消息

你可以订阅多个频道或使用通配符模式。例如,订阅所有以 news. 开头的频道:

redis">PSUBSCRIBE news.*

发布到不同的频道:

redis">PUBLISH news.sports "Sports news update"
PUBLISH news.weather "Weather forecast update"

订阅终端将接收到相应的消息。

4. 使用密码保护的 Redis 实例

如果 Redis 配置了访问密码,连接时需要提供密码。例如:

redis-cli -a yourpassword

或者在 redis-cli 内使用 AUTH 命令:

redis">AUTH yourpassword

五、进阶使用

除了命令行工具,你还可以在各种编程语言中使用 Redis 的 Pub/Sub 功能。例如,使用 Python 的 redis 库:

import redis# 创建 Redis 连接
r = redis.Redis(host='localhost', port=6379, password='yourpassword')# 订阅频道
pubsub = r.pubsub()
pubsub.subscribe('news')# 监听消息
for message in pubsub.listen():if message['type'] == 'message':print(f"Received message: {message['data'].decode()}")

发布消息:

import redisr = redis.Redis(host='localhost', port=6379, password='yourpassword')
r.publish('news', 'Hello from Python!')

在 Ubuntu 上安装和配置用于 C++ 编程的 Redis 环境,主要包括以下几个步骤:

  1. 安装 Redis 服务器(如果尚未安装)
  2. 安装必要的依赖库
  3. 安装 C++ Redis 客户端库(如 redis-plus-plus
  4. 配置开发环境
  5. 编写和运行示例 C++ 程序

以下是详细的步骤说明:

六、安装 Redis 服务器

如果你还没有在 Ubuntu 上安装 Redis,可以参考之前的回答中的步骤进行安装。如果已经安装,可以跳过此部分。

七、安装必要的依赖库

在安装 redis-plus-plus 之前,需要先安装一些依赖库,包括 hiredisCMake 等。

1. 更新包列表

sudo apt update

redis_237">2. 安装 hiredis

hiredis 是一个高性能的 Redis C 客户端库,是 redis-plus-plus 的依赖。

sudo apt install libhiredis-dev

3. 安装 CMake

CMake 是一个跨平台的构建系统,用于管理项目的构建过程。

sudo apt install cmake

4. 安装其他依赖

确保安装了编译 C++ 代码所需的编译器和工具:

sudo apt install build-essential

redisplusplusC_Redis__261">八、安装 redis-plus-plus(C++ Redis 客户端库)

redis-plus-plus 是一个功能丰富且易于使用的 C++ Redis 客户端库,基于 hiredis 构建。

redisplusplus__265">1. 克隆 redis-plus-plus 仓库

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

2. 创建构建目录并编译

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install

这将编译并安装 redis-plus-plus 库到系统中。

3. 更新库缓存

sudo ldconfig

九、配置开发环境

确保你的 C++ 项目能够找到 redis-plus-plushiredis 的头文件和库文件。下面以一个简单的 C++ 项目为例,演示如何配置和使用 redis-plus-plus

1. 创建项目目录

mkdir ~/redis_cpp_project
cd ~/redis_cpp_project

2. 编写示例代码

创建一个名为 main.cpp 的文件,内容如下:

#include <sw/redis++/redis++.h>
#include <iostream>using namespace sw::redis;int main() {try {// 连接到 Redis 服务器auto redis = Redis("tcp://127.0.0.1:6379");// 设置键值对redis.set("key", "Hello, Redis!");// 获取键的值auto val = redis.get("key");if (val) {std::cout << "key: " << *val << std::endl;} else {std::cout << "key does not exist." << std::endl;}// 发布-订阅示例// 订阅频道auto sub = redis.subscriber();sub.on_message([](std::string channel, std::string msg) {std::cout << "Received message from channel " << channel << ": " << msg << std::endl;});sub.subscribe("news");// 在另一个线程中监听消息std::thread([&sub]() {try {sub.consume();} catch (const std::exception &e) {std::cerr << "Subscriber error: " << e.what() << std::endl;}}).detach();// 发布消息redis.publish("news", "Hello from C++!");// 等待一段时间以确保消息被接收std::this_thread::sleep_for(std::chrono::seconds(1));} catch (const Error &err) {std::cerr << "Redis error: " << err.what() << std::endl;}return 0;
}

3. 编写 CMakeLists.txt

创建一个名为 CMakeLists.txt 的文件,内容如下:

cmake_minimum_required(VERSION 3.5)
project(RedisCppExample)set(CMAKE_CXX_STANDARD 14)find_package(hiredis REQUIRED)
find_package(redis++ REQUIRED)add_executable(redis_cpp_example main.cpp)target_link_libraries(redis_cpp_example PRIVATE redis++ hiredis::hiredis)

4. 构建项目

mkdir build
cd build
cmake ..
make

5. 运行示例程序

确保 Redis 服务器正在运行,然后执行:

./redis_cpp_example

你应该会看到类似如下的输出:

key: Hello, Redis!
Received message from channel news: Hello from C++!

十、进一步学习和参考

1. 官方文档

  • redis-plus-plus GitHub 仓库
  • hiredis GitHub 仓库

2. 示例代码

redis-plus-plus 仓库中包含多个示例代码,展示了如何使用不同的功能。可以参考这些示例来扩展你的项目。

3. 编程指南

  • 连接 Redis:如何配置连接选项,如密码验证、SSL 等。
  • 基本操作:字符串、哈希、列表、集合、有序集合等数据结构的操作。
  • 发布-订阅:高级用法,如模式订阅、消息过滤等。
  • 事务和管道:如何在 C++ 中使用 Redis 的事务和管道功能。
  • 异步操作:使用异步 API 以提高性能和响应性。

十一、常见问题排查

1. 编译错误

如果在编译过程中遇到找不到 redis-plus-plushiredis 的头文件或库文件,确保它们已正确安装,并且 CMakeLists.txt 中的 find_package 指令能够找到它们。

2. 运行时错误

如果运行时无法连接到 Redis 服务器,请确保 Redis 服务器正在运行,并且连接地址和端口正确。

3. 权限问题

如果 Redis 配置了访问密码,在连接时需要提供密码。例如:

auto redis = Redis("tcp://127.0.0.1:6379?password=yourpassword");

http://www.ppmy.cn/news/1563240.html

相关文章

API接口技术开发小红书笔记详情api采集笔记图片视频参数解析

小红书笔记详情 API 采集笔记图片视频参数解析如下&#xff1a; 获取 API 访问权限 注册账号&#xff1a;填写用户名、邮箱、密码等必要信息完成注册&#xff0c;并登录进入开发者控制台。创建应用并申请接口权限&#xff1a;填写应用名称、描述、应用类型等信息并提交审核。审…

【初体验】【学习】Web Component

序言 欢迎来到2025年的第一篇博客&#xff01;新的一年&#xff0c;将持续深耕于新知识的学习&#xff0c;并不断深化对已有知识的理解。目标是构建一个更加系统化、结构化的知识体系&#xff0c;以更好地应对未来的挑战与机遇。 前言 需要以下基础&#xff1a; Web Compon…

弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了

网址&#xff1a; (63条消息) DSIStudio简体中文汉化版(2022年7月)-算法与数据结构文档类资源-CSDN文库

Github 2025-01-13 开源项目周报 Top15

根据Github Trendings的统计,本周(2025-01-13统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目8TypeScript项目5C项目1Go项目1C++项目1Objective-C项目1HTML项目1Jupyter Notebook项目1OpenHands: 人工智能驱动的软件开发代理平台…

【C++】21.map和set的使用

文章目录 1. 序列式容器和关联式容器2. set系列的使用2.1 set和multiset参考文档2.2 set类的介绍2.3 set的构造和迭代器构造函数&#xff1a;双向迭代器迭代器&#xff1a; 2.4 set的增删查2.5 insert和迭代器遍历使用样例&#xff1a;2.6 find和erase使用样例&#xff1a;2.7 …

【机器学习 | 数据挖掘】离群点检测

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

一文大白话讲清楚Node中的流stream

文章目录 一文大白话讲清楚Node中的流stream1. 啥是流stream2. stream的种类2.1 可写流2.2 可读流2.3 双工流2.4 转换流 3.应用场景3.1 双工流babel3.2 文件操作3.3 打包工具的实现 一文大白话讲清楚Node中的流stream 1. 啥是流stream 先举个例子&#xff0c;你要把大桶水从A…

基于YOLOv8与CGNet的鸟类智能识别系统 深度学习图像分类 鸟类目标检测与分类 图像特征提取 模型优化与应用 数据可视化(源码+指导+定制)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…