Redis的频道发布与消息订阅
Redis的频道发布与消息订阅
进程间的一种通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
订阅/发布消息图
下图展示了频道channel1,以及订阅这个频道的三个客户端-client2、client5、client1
当有新消息通过PUBLISH命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端。
Redis 发布订阅命令
PSUBSCRIBE pattern [pattern ...]
订阅一个或者多个符合模式匹配的频道
【假设客户端同时订阅了某种模式和符合该模式的某个频道,那么发送给这个频道的消息将被客户端接收到两次,只不过这两条消息的类型不同,一个是message类型,一个是pmessage类型,但其内容相同。 】
PUBSUB subcommand [argument [argument ...]]
返回由活跃频道组成的列表,即可以查询订阅与发布系统的状态
PUBLISH channel message
发送消息到指定的频道
【其返回值为接收到该消息的订阅者的数量】
SUBSCRIBE channel [channel ...]
订阅一个或多个频道
【其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道】
PUNSUBSCRIBE [pattern [pattern ...]]
退订所有符合模式匹配的频道
UNSUBSCRIBE [channel [channel ...]]
退订一个或多个频道
【Redis采用UNSUBSCRIBE和PUNSUBSCRIBE命令取消订阅,其返回值与订阅类似。
由于Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。
在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,
其返回值都包含了该客户端当前订阅的频道和模式的数量,当这个数量变为0时,该客户端会自动退出订阅状态。】
简单练习
客户端先订阅后,消息发布后才能接收到消息
- 可以一次性订阅多个,SUBSCRIBE c1 c2 c3
- 消息发布,PUBLISH c2 hell0-redis
- 订阅多个,通配符*,PSUBSCRIBE new*
- 收取消息,PUBLISH new1 redis2019
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?