第七章_Redis发布订阅

是什么

定义

是一种消息通信模式:发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递

官网

一句话

Redis可以实现消息中间件MQ的功能,通过发布订阅实现消息的引导和分流。仅代表我个人,不推荐使用该功能,专业的事情交给专业的中间件处理,redis就做好分布式缓存功能

能做什么

Redis客户端可以订阅任意数量的频道,类似我们微信关注多个公众号

当有新消息通过PUBLISH命令发送给频道channel1时

小总结 

 发布/订阅其实是一个轻量的队列,只不过数据不会被持久化,一般用来处理实时性较高的异步消息

常用命令 

SUBSCRIBE channel [channel ...] 

订阅给定的一个或多个频道的信息

推荐先执行订阅后再发布,订阅成功之前发布的消息是收不到的

订阅的客户端每次可以收到一个 3​个参数的消息

消息的种类

始发频道的名称

实际的消息内容

PUBLISH channel message

发布消息到指定的频道

PSUBSCRIBE pattern [pattern ...]

按照模式批量订阅,订阅一个或多个符合给定模式(支持*号?号之类的)的频道

PUBSUB subcommand [argument [argument ...]]

查看订阅与发布系统状态

PUBSUB CHANNELS

由活跃频道组成的列表

PUBSUB NUMSUB  [channel [channel ...]]

某个频道有几个订阅者

PUBSUB NUMPAT

只统计使用PSUBSCRIBE命令执行的,返回客户端订阅的唯一模式的数量 

UNSUBSCRIBE [channel [channel ...]]

取消订阅

PUNSUBSCRIBE [pattern [pattern ...]]

退订所有给定模式的频道 

案例演示

命令演示

开启3个客户端,演示客户端A、B订阅消息,客户端C发布消息

演示批量订阅和发布

取消订阅 

小总结 

Redis可以实现消息中间件MQ的功能,通过发布订阅实现消息的引导和分流。仅代表个人,不推荐使用该功能,专业的事情交给专业的中间件处理,redis就做好分布式缓存功能

Pub/Sub缺点

发布的消息在Redis系统中不能持久化,因此,必须先执行订阅,再等待消息发布。如果先发布了消息,那么该消息由于没有订阅者,消息将被直接丢弃

消息只管发送对于发布者而言消息是即发即失的,不管接收,也没有ACK机制,无法保证消息的消费成功

以上的缺点导致Redis的Pub/Sub模式就像个小玩具,在生产环境中几乎无用武之地,为此Redis5.0版本新增了Stream数据结构,不但支持多播,还支持数据持久化,相比Pub/Sub更加的强大

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟雨忆南唐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值