Redis|Redis发布与订阅

订阅与发布 1、简介 订阅与发布是redis中的一种消息通信模式,主要分为两大角色:发布者订阅者,在发布者和订阅者之间需要一个通道,也叫频道。

发布者(pub):主要用来发送消息. 订阅者(sub); 主要订阅发布者发布的消息. 通道(channel):主要用来传送消息.

Redis|Redis发布与订阅
文章图片

其中发布者可以发送多次消息,订阅者可以订阅多个频道.
2、实例 前提需要开启两个redis
# 订阅者sub# 连接进入redis基于docker [root@itbestboy ~]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 17e755da11bfredis:5.0.14"docker-entrypoint.s…"6 weeks agoUp 4 days6379/tcp# 进入redis [root@itbestboy ~]# docker exec -it 17e /bin/bash #进入客户端 root@17e755da11bf:/data# redis-cli #检查是否可以正常启动 127.0.0.1:6379> ping PONG # 订阅频道a 127.0.0.1:6379> SUBSCRIBE a Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "a" 3) (integer) 1 #在开一个redis,用作发布者发送消息 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 > arg arg ... arg. Subcommands are: 2) CHANNELS [] -- 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 ...] #每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( itbestboy 、 it.blog等等)

3.3、 Publish
用于将信息发送到指定的频道
语法:
PUBLISH channel message

3.4、Unsubscribe
用于退订给定的一个或多个频道的信息
语法:
UNSUBSCRIBE channel [channel ...]

3.5、Punsubscribe
用于退订所有给定模式的频道
语法:
PUNSUBSCRIBE [pattern [pattern ...]]

3.6、Pubsub
令用于查看订阅与发布系统状态.
【Redis|Redis发布与订阅】语法:
PUBSUB > [argument [argument ...]] # 若不知道怎么使用可以使用命令pubsub help 127.0.0.1:6379> PUBSUB help 1) PUBSUB > arg arg ... arg. Subcommands are: 2) CHANNELS [] -- 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

    推荐阅读