文章目录
前言
已经不推荐使用发布/订阅,现在专业的使用Mq,kafka,RabbitMQ等中间件
- 发布的消息在Redis系统中不能持久化,因此,必须先执行订阅,再等待消息发布。如果先发布了消息,那么该消息由于没有接收者
- 只管发送对于发布者而言消息是即发即失的,不管接收,也没有ACK机制,无法保证消息的消费成功。
- 5.0版本更新的Stream,支持多播以及数据持久化,比发布/订阅更加强大
一、发布/订阅是什么?
是一种消息通信模式:
- 发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递
- Redis可以实现消息中间件MQ的功能,通过发布订阅实现消息的引导和分流
- Redis客户端可以订阅任意数量的频道,类似我们微信关注多个公众号
发布/订阅其实是一个
轻量的队列
,只不过数据不会被持久化,一般用来处理实时性较高的异步消息
二、 基本命令
channel频道是虚拟存在,不用创建,直接对其进行订阅/发布即可
SUBSCRIBE channel [channel] // 订阅多个频道
PUBLISH channel message // 对一个频道发布信息
PSUBSCRIBE pattern [pattern...] // 按照模式批量订阅,订阅一个或多个符合给定模式(支持*号?号之类的)的频道
PUSUB CHANNELS // 由活跃频道组成的列表
PUSUB NUMSUB channel [channel...] // 某个频道有几个订阅者
PUBSUB NUMPAT // 只统计使用PUBSCRIBE 命令执行的,返回客户端订阅的唯一模式的数量
UNSUBSCRIBE channel [channel...] // 取消订阅
PUNSUBSCRIBE pattern [pattern...] // 退订所有给定模式的频道