订阅与发布
1、简介 订阅与发布是redis中的一种消息通信模式,主要分为两大角色:发布者
和订阅者
,在发布者和订阅者之间需要一个通道,也叫频道。
发布者(pub):主要用来发送消息.
订阅者(sub);
主要订阅发布者发布的消息.
通道(channel):主要用来传送消息.
文章图片
其中发布者可以发送多次消息,订阅者可以订阅多个频道.
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
推荐阅读
- 趣学编程|面试官(Dubbo是什么,他有什么特性())
- docker之修改docker0网桥默认网段
- java|基于SSM的Java图书管理系统
- java|Spring Boot在线教育系统
- java|图书管理系统
- #yyds干货盘点#--redis-2
- 无快不破,在本地 docker 运行 IDEA 里面的项目()
- java|还在为没有项目经验进不了大厂而烦恼吗(六大电商Java开发项目分享,有哪些值得推荐的 Java 练手项目?(第三天))
- 数据结构|数据结构——平衡二叉树(AVL树)(java版)