Redis Pub/Sub

Last Modified: 2022/11/13

概述

Redis 的 Pub/Sub 实现了经典的发布订阅模式,发布者发布消息不是直接发布到具体的消费者,而是发布到 channel,订阅者会订阅若干个 channel,发布到这些 channel 的消息会被订阅者接收到。

订阅和退订

# 订阅 channel1 和 channel2
SUBSCRIBE channel1 channel2
# 退订 channel1 和 channel2
UNSUBSCRIBE channel1 channel2

发布一条消息

# 向 channel1 发布了一个消息,消息内容为 hello
PUBLISH channel1 hello

假如有三个订阅者,发布者发布的消息为 hello,该消息会被三个订阅者收到,如下图:

所有订阅 channel1 的客户端都会收到 hello 这条消息。

基于模式的发布和订阅

订阅的时候,可以使用模式表达式,* 表示任意字符串,? 表示单个字符。

# foo* 可以匹配 foo 开头的所有字符串,例如: foo1 foo2 ...
PSUBSCRIBE foo* news.*
PUNSUBSCRIBE foo* news.*

Redis 发布消息是一次性的,消息发出后就丢弃(fire-and-forget)不会被发送端缓存,接收端如果由于某种原因掉线,那么掉线期间的消息就永远没有了。

有问题吗?点此反馈!

温馨提示:反馈需要登录