Redis的订阅命令(Pub/Sub)是实现实时数据流处理的核心工具。通过SUBSCRIBE、PUBLISH和PSUBSCRIBE等命令,你可以快速构建高效的消息传递系统,提升业务响应速度。下面是实战代码示例:在终端1运行订阅:redis-cli SUBSCRIBE mychannel;在终端2发布消息:redis-cli PUBLISH mychannel "Hello, Redis Pub/Sub!"。订阅端立即收到消息,实现毫秒级响应。结合Lua脚本和pipeline,进一步优化吞吐量,轻松处理高并发场景。
基础订阅实战
使用redis-cli进入Redis命令行,执行SUBSCRIBE news 命令,即可订阅名为news的频道。另一个终端执行PUBLISH news "最新消息:系统升级完成",订阅端会实时接收并显示消息。这是最简单的Pub/Sub实战,适合聊天室或通知系统,帮助你快速上手数据流处理。
模式订阅技巧
PSUBSCRIBE user.* 可以订阅所有以user.开头的频道,例如PUBLISH user.123 "用户123上线",订阅端自动匹配接收。实战中,这用于多用户通知场景,避免逐一订阅,提升响应效率。
结合Node.js实战代码
const redis = require('redis'); const sub = redis.createClient(); sub.subscribe('events'); sub.on('message', (channel, message) => { console.log(`收到${channel}: ${message}`); }); const pub = redis.createClient(); pub.publish('events', '新事件触发'); 这段代码实现Node.js环境下的订阅发布,业务响应速度显著提升。
Python实战示例
import redis r = redis.Redis() p = r.pubsub() p.subscribe('alerts') for message in p.listen(): if message['type'] == 'message': print(message['data']) r.publish('alerts', '警报:库存不足') Python用户用此代码快速集成Redis Pub/Sub,处理实时警报流。
高并发优化
在高并发场景,使用UNSUBSCRIBE及时退订频道,避免内存泄漏。结合RPOPLPUSH实现可靠消息队列,PUBLISH后立即持久化,确保数据不丢失,提升系统稳定性。
监控与调试
执行PUBSUB NUMSUB channel 查看订阅人数,PUBSUB CHANNELS * 列出活跃频道。这些命令帮助实战中监控数据流,及时调整策略,提高响应速度。
FAQ
Q: Redis Pub/Sub消息丢失怎么办?
A: Pub/Sub是无持久化机制,结合LIST或STREAM实现可靠投递。
Q: 订阅多个频道怎么操作?
A: 用SUBSCRIBE channel1 channel2 或 PSUBSCRIBE 'channel*'。
Q: Pub/Sub支持集群吗?
A: Redis Cluster不支持原生Pub/Sub,推荐用Redis Streams替代。
Q: 如何统计订阅者数量?
A: PUBSUB NUMSUB channel1 channel2 命令直接返回。