Redis的发布和订阅

Redis的发布和订阅

什么是发布和订阅

redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。

redis客户端可以订阅任意数量的频道。

redis的发布和订阅

客户端可以订阅频道如下图:

在这里插入图片描述

当给这个频道发布消息后,消息就会发送给订阅的客户端,如下:

在这里插入图片描述

发布和订阅常用命令

subscribe:订阅一个或者多个频道

subscribe channel [channel ...]

订阅给定的一个或多个频道的信息。注:channel可以是任意

示例:

127.0.0.1:6379> subscribe msg1 msg2	# 订阅2个频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"	# 返回值的类型:显示订阅成功
2) "msg1"		# 订阅的频道名字
3) (integer) 1	# 目前已订阅的频道数量
1) "subscribe"	# 返回值的类型:显示订阅成功
2) "msg2"		# 订阅的频道名字
3) (integer) 2	# 目前已订阅的频道数量

publish:发布消息到指定的频道

publish channel message

将信息message发送到指定的频道channel。注:另起一个redis客户端测试

示例:

#另起一个redis客户端
127.0.0.1:6379> publish msg1 hello	#向msg1频道发送hello
(integer) 1

#第1个redis客户端
1) "message"	# 返回值的类型:信息
2) "msg1"		# 来源(从那个频道发送过来)
3) "hello"		# 信息内容

psubscribe:订阅一个或多个符合给定模式的频道bc

psubscribe pattern [pattern ...]

订阅一个或多个符合给定模式的频道。

每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。

示例:

127.0.0.1:6379> psubscribe news.* tweet.*
1) "psubscribe"                  # 返回值的类型:显示订阅成功
2) "news.*"                      # 订阅的模式
3) (integer) 1                   # 目前已订阅的模式的数量
1) "psubscribe"
2) "tweet.*"
3) (integer) 2

pubsub:查看查看订阅的频道

pubsub <subcommand> [argument [argument ...]]

比如:pubsub 频道名

示例:

127.0.0.1:6379> pubsub channels
1) "msg2"
2) "msg1"

unsubscribe:退订一个或者多个频道

unsubscribe channel [channel ...]

这个命令在不同的客户端中有不同的表现。

示例:

127.0.0.1:6379> unsubscribe msg1
1) "unsubscribe"	# 返回值的类型:显示退订
2) "msg1"			# 退订的频道名字
3) (integer) 0

解释:

nsubscribe命令不能应用于redis-cli客户端中,因为redis-cli运行订阅后,客户端处于阻塞模式(就是不在redis命令行状态中),只能通过Ctrl-C退出订阅模式,而如果使用第三方组件则可以实现这一功能。

punsubscribe也是使用“punsubscribe news.*”的命令形式来使用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WorkLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值