Redis PubSub
时间: 2020-07-23 10:33:33
Redis PubSub 介绍
Redis Pub/Sub 是 Redis 实现的发布订阅模式,用于解耦生产者和消费者。生产者向管道发送消息,不用关心消费者具体是谁,消费者从管道读取消息,不用关心发送者是谁。生产者和消费者只需要知道 Redis 的存在即可。
Redis Pub/Sub 的底层是 channel
,不属于任何一个数据库。消费者只能获取到订阅之后的消息,订阅之前的消息,如果生产者发送消息的时候,没用消费之订阅 channel
消息将被丢弃。
发送者可以有一到多个,消费者也可以有一到多个。消费者订阅之后可以收到所有发送到管道中的消息。
常用命令
-
订阅
PSUBSCRIBE
订阅多个管道的时候,如果有多个规则匹配到消息的来源管道,消息会被接收多次。比如说:消费者订阅 c* ch* ch1
,生产者向 ch1
发送一个消息,则消费者会收到三次消息,接收到消息唯一不同的地方是匹配的模式。SUBSCRIBE
则不会出现这种情况。
# 订阅一个。ch1 是订阅的管道名称
SUBSCRIBE ch1
# 订阅一个。ch* 是订阅的管道名称, 接收发送到 ch* 的消息,*不是通配符。
SUBSCRIBE ch*
# 订阅多个。ch1 ch2 ch3 是订阅的管道名称
SUBSCRIBE ch1 ch2 ch3
# 订阅一个,通配符。ch* 是订阅的管道
PSUBSCRIBE ch*
# 订阅多个,通配符。ch* 和 pch* 是订阅的管道
PSUBSCRIBE ch* pch*
-
发送消息
# 发送消息 ch1 管道名字 a 发送的内容
PUBLISH ch1 a
-
取消订阅
# 取消订阅所有
UNSUBSCRIBE
# 取消订阅指定渠道
UNSUBSCRIBE ch1
# 取消订阅,取消一个。通配符 ch.* 管道
PUNSUBSCRIBE ch.*
# 取消订阅,取消多个。通配符 ch.* psc* 管道
PUNSUBSCRIBE ch.* psc*
4. 查看管道状态
# 查看当前正在使用的管道(当前正在被订阅的管道)
PUBSUB CHANNELS *
# 查看管道订阅者的数量,值返回SUBSCRIBE
PUBSUB NUMSUB ch1
# 查看所有被订阅的模式的数量
PUBSUB NUMPAT