CentOS Redis发布订阅配置完全指南(2026)

Redis 发布订阅(Pub/Sub)是一种轻量级的消息通信模式,广泛应用于实时消息推送、聊天系统、消息广播等场景。本文详细介绍在 CentOS 系统上如何安装、配置 Redis 并实现发布订阅功能,提供多种编程语言的实战代码示例。

一、环境准备

在开始之前,请确保你已拥有一台 CentOS 服务器。

二、安装 Redis

通过 yum 官方源安装 Redis,适用于 CentOS 7/8:

sudo yum install epel-release
sudo yum install redis

三、启动并验证 Redis 服务

安装完成后,启动 Redis 服务并设置为开机自启动:

sudo systemctl start redis
sudo systemctl enable redis

验证服务运行状态:

sudo systemctl status redis

如果看到 active (running) 字样,说明 Redis 已正常运行。

四、发布订阅基础操作

Redis 自带 redis-cli 命令行工具,可以直接进行发布订阅测试。

4.1 订阅频道

在第一个终端窗口执行:

redis-cli subscribe my_channel

4.2 发布消息

在第二个终端窗口向同一频道发布消息:

redis-cli publish my_channel 'Hello, Redis!'

订阅端的终端窗口将实时收到该消息。Pub/Sub 支持同时订阅多个频道,也支持按模式(pattern)批量订阅。

五、编程语言实战示例

5.1 Python 示例(redis-py)

Python 环境下使用 redis-py 库实现订阅:

import redis

# 连接 Redis 服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 创建发布者
pub = r
pub.publish('my_channel', 'Hello from Python!')

# 创建订阅者
pubsub = r.pubsub()
pubsub.subscribe('my_channel')

for message in pubsub.listen():
    if message['type'] == 'message':
        print(f"收到消息: {message['data'].decode('utf-8')}")

安装依赖:

pip install redis

5.2 Node.js 示例(ioredis)

Node.js 环境使用 ioredis 库:

const Redis = require('ioredis');

const redis = new Redis();

// 订阅频道
redis.subscribe('my_channel', (err, count) => {
  if (!err) {
    console.log(`已订阅 ${count} 个频道`);
  }
});

// 发送消息
redis.publish('my_channel', 'Hello from Node.js!');

// 接收消息
redis.on('message', (channel, message) => {
  console.log(`频道 ${channel} 收到: ${message}`);
});

安装依赖:

npm install ioredis

5.3 Java 示例(Jedis)

Java 环境使用 Jedis 客户端:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class RedisPubSubDemo {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost", 6379);

        // 订阅频道
        jedis.subscribe(new JedisPubSub() {
            @Override
            public void onMessage(String channel, String message) {
                System.out.println("收到消息: " + message);
            }
        }, "my_channel");
    }
}

六、Redis 发布订阅与 Kafka/RabbitMQ 的区别

特性 Redis Pub/Sub Kafka RabbitMQ
消息持久化 ❌ 不支持 ✅ 支持 ✅ 支持
消息堆积 堆积能力强 堆积能力强
延迟 超低
适用场景 实时消息、简单广播 大数据流处理 企业级消息队列
实现复杂度 极低

对于需要消息持久化和可靠传输的生产环境,建议使用 Kafka 或 RabbitMQ;对于简单的实时消息推送和系统间解耦,Redis Pub/Sub 是性价比最高的选择。

七、常见问题排查

Q:订阅后收不到消息?
A:检查 Redis 服务是否正常运行(systemctl status redis),以及订阅频道名称是否完全一致。

Q:生产环境可以用 Redis Pub/Sub 吗?
A:适合对可靠性要求不高的实时消息场景。如果需要消息持久化和重试机制,建议配合其他消息队列使用。

Q:如何查看当前活跃的频道?
A:Redis 本身不提供直接查看所有活跃频道的命令,订阅者断开连接后频道自动消失。可以通过监控客户端连接数来判断:redis-cli info clients

八、总结

Redis 发布订阅配置简单、学习曲线低,是实现实时通信功能的理想工具。本文覆盖了从安装部署到多语言代码实战的全流程,建议读者在本地环境中亲手实践各个步骤,快速掌握这一实用技能。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注