订阅与发布
1、简介
订阅与发布是redis中的一种消息通信模式,主要分为两大角色:发布者 和订阅者 ,在发布者和订阅者之间需要一个通道,也叫频道。
发布者(pub):主要用来发送消息.
订阅者(sub);主要订阅发布者发布的消息.
通道(channel):主要用来传送消息.
其中发布者可以发送多次消息,订阅者可以订阅多个频道.
2、实例
前提需要开启两个redis
[root@itbestboy ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17e755da11bf redis:5.0.14 "docker-entrypoint.s…" 6 weeks ago Up 4 days 6379/tcp
[root@itbestboy ~]
root@17e755da11bf:/data
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> SUBSCRIBE a
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "a"
3) (integer) 1
127.0.0.1:6379> PUBLISH a hello
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> SUBSCRIBE a
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "a"
3) (integer) 1
1) "message"
2) "a"
3) "hello"
127.0.0.1:6379> PUBSUB help
1) PUBSUB <subcommand> arg arg ... arg. Subcommands are:
2) CHANNELS [<pattern>] -- Return the currently active channels matching a pattern (default: all).
3) NUMPAT -- Return number of subscriptions to patterns.
4) NUMSUB [channel-1 .. channel-N] -- Returns the number of subscribers for the specified channels (excluding patterns, default: none).
127.0.0.1:6379> PUBSUB channels
1) "a"
127.0.0.1:6379> UNSUBSCRIBE a
1) "unsubscribe"
2) "a"
3) (integer) 0
在发布订阅中大致包括如下命令
3、常见命令
3.1、Subscribe
用于订阅给定的一个或多个频道的信息,会进入阻塞状态,知道发布者发送消息
语法
SUBSCRIBE channel [channel ...]
3.2、Psubscribe
订阅一个或多个符合给定模式的频道,会进入阻塞状态,知道发布者发送消息
语法:
PSUBSCRIBE pattern [pattern ...]
3.3、 Publish
用于将信息发送到指定的频道
语法:
PUBLISH channel message
3.4、Unsubscribe
用于退订给定的一个或多个频道的信息
语法:
UNSUBSCRIBE channel [channel ...]
3.5、Punsubscribe
用于退订所有给定模式的频道
语法:
PUNSUBSCRIBE [pattern [pattern ...]]
3.6、Pubsub
令用于查看订阅与发布系统状态.
语法:
PUBSUB <subcommand> [argument [argument ...]]
127.0.0.1:6379> PUBSUB help
1) PUBSUB <subcommand> arg arg ... arg. Subcommands are:
2) CHANNELS [<pattern>] -- Return the currently active channels matching a pattern (default: all).
3) NUMPAT -- Return number of subscriptions to patterns.
4) NUMSUB [channel-1 .. channel-N] -- Returns the number of subscribers for the specified channels (excluding patterns, default: none).
channels:列出全部活跃的channel或者符合pattern的channel
channel活跃指:至少有一个订阅者。
返回值:活跃channel名称
NUMPAT:获取channel模板个数
NUMSUB:获取指定channel的订阅个数。如果不指定channel,返回空
返回值:订阅指定channel的数量(活跃的).输入channel模式为0
|