>CentOS Redis 发布订阅配置完全指南
Redis 的发布订阅(Pub/Sub)模式是一种轻量级的消息通信机制,允许多个客户端之间实时传递消息。本文将详细介绍在 CentOS 系统上如何安装、配置和使用 Redis 的发布订阅功能。
>一、Redis 发布订阅模式简介
发布订阅模式包含三个核心角色:
- >
- 发布者(Publisher):向指定频道发送消息
- 订阅者(Subscriber):监听并接收频道中的消息
- 频道(Channel):消息传递的通道
与消息队列不同,Pub/Sub 是”即发即忘”模式——只有在订阅者在线时,消息才会被接收,离线期间的消息不会被保留。
>二、CentOS 安装 Redis
>2.1 使用 YUM 安装
>sudo yum install epel-release -y
sudo yum install redis -y
2.2 从源码编译安装(推荐)
>sudo yum install gcc make -y
wget https://download.redis.io/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable
make
sudo make install
三、Redis 发布订阅核心配置
>3.1 修改配置文件
打开 Redis 配置文件进行必要调整:
>sudo vi /etc/redis/redis.conf
关键配置项:
| 配置项 | 推荐值 | 说明 |
|--------|--------|------|
| bind | 0.0.0.0 或指定 IP | 允许远程连接 |
| protected-mode | yes | 生产环境必须开启 |
| requirepass | 设置强密码 | 防止未授权访问 |
| timeout | 300 | 空闲连接超时(秒) |
| maxclients | 10000 | 最大客户端连接数 |
>3.2 启动 Redis 服务
>sudo systemctl start redis
sudo systemctl enable redis
验证服务状态:
>redis-cli ping
返回 PONG 表示正常
四、发布订阅基本操作
>4.1 订阅频道
在终端中启动一个订阅者:
>redis-cli
SUBSCRIBE news_channel
订阅后,该客户端会进入监听状态,等待接收消息。
>4.2 按模式订阅
使用 PSUBSCRIBE 可以订阅匹配模式的频道:
>PSUBSCRIBE news_*
这样 news_sports、news_tech 等频道的消息都会被接收。
>4.3 发布消息
在另一个终端中发布消息:
>redis-cli
PUBLISH news_channel "Hello, this is a test message"
返回值为接收到该消息的订阅者数量。
>4.4 取消订阅
>UNSUBSCRIBE news_channel # 取消订阅指定频道
PUNSUBSCRIBE news_* # 取消模式订阅
五、实际应用示例:实时通知系统
以下是一个典型的实时通知系统配置流程:
>5.1 配置发布者(通知发送端)
>
发送系统告警
PUBLISH alerts:cpu "CPU usage exceeded 90% on server-01"
>发送用户通知
PUBLISH notify:user:1001 "您有一条新消息"
5.2 配置订阅者(通知接收端)
>
监控系统订阅所有告警
SUBSCRIBE alerts:cpu alerts:memory alerts:disk
>用户订阅个人通知
SUBSCRIBE notify:user:1001
六、生产环境注意事项
消息不持久化:订阅者离线时消息会丢失,如需持久化请使用 Redis Stream
连接数控制:每个订阅者占用一个连接,注意 maxclients 配置
网络带宽:高频消息发布时需关注网络带宽消耗
安全性:生产环境务必设置 requirepass,并通过防火墙限制访问 IP
监控:使用 PUBSUB CHANNELS、PUBSUB NUMSUB 等命令监控频道状态
>七、常见问题排查
>连接被拒绝
检查 bind 配置和防火墙规则:
>sudo firewall-cmd --add-port=6379/tcp --permanent
sudo firewall-cmd --reload
订阅者收不到消息
确认订阅者和发布者连接的是同一个 Redis 实例
检查频道名称是否一致(区分大小写)
确认订阅者没有因网络中断而断开
>内存占用过高
如果频道积压大量消息或连接数过多,可通过 CLIENT LIST 查看连接状态,及时清理空闲连接。
---
通过以上配置,你可以在 CentOS 上快速搭建基于 Redis Pub/Sub 的实时消息系统。对于需要消息持久化的场景,建议考虑 Redis Stream 或专业消息队列。