Redis篇-4--原理篇3--Redis发布/订阅(Pub/Sub)

1、概述

Redis 发布/订阅(Publish/Subscribe,简称 Pub/Sub)是一种消息传递模式,允许客户端订阅一个或多个通道(channel),并接收其他客户端发布到这些通道的消息。

2、Redis 发布/订阅的主要概念

发布者(Publisher):发布者可以向指定的通道发送消息。每个消息会被发送给所有订阅了该通道的客户端。

订阅者(Subscriber):订阅者可以订阅一个或多个通道,并接收订阅通道的消息。订阅者不会直接与发布者交互,它们只负责监听通道中的消息。

通道(Channel):通道是消息传递的媒介。发布者将消息发布到特定的通道,订阅者从这些通道接收消息。通道的名字是一个字符串,可以是任意的标识符。

3、redis发布订阅的关键特性

多播(Multicasting):当发布者向某个通道发布消息时,所有订阅了该通道的客户端都会收到这条消息。这意味着每个订阅者都可以独立地接收到相同的消息,而不需要与其他订阅者竞争。

无状态:Redis 本身不保存消息的历史记录。一旦消息被发布并分发给所有订阅者,它就会被丢弃。因此,如果某个订阅者在消息发布时没有连接,它将无法接收到该消息。这与消息队列(如 RabbitMQ 或 Kafka)不同,后者通常会保留消息直到所有订阅者都处理完毕。

模式匹配 :Redis 支持基于模式的订阅。订阅者不仅可以订阅具体的通道,还可以订阅符合某些模式的通道。例如,订阅者可以订阅所有以 news.* 开头的通道,从而接收所有匹配该模式的消息。

轻量级:Redis 的发布/订阅机制非常轻量级,适合用于简单的实时通知和事件驱动的应用程序。它不提供复杂的排队、持久化或确认机制,因此不适合用于需要可靠消息传递的场景。

4、Redis 发布/订阅的命令

(1)、SUBSCRIBE channel [channel ...]
作用 :订阅一个或多个通道。订阅后,客户端会进入订阅模式,只能接收消息,不能再执行其他命令(除了 UNSUBSCRIBE 和 PING)。
示例:(订阅news.sports和news.tech两个主题)

java 复制代码
 SUBSCRIBE news.sports news.tech

订阅主题后,打印了相关信息。

(2)、UNSUBSCRIBE [channel [channel ...]]
作用 :取消订阅一个或多个通道。如果不指定通道,则取消订阅所有通道。
示例:(取消订阅news.sports这个主题)

java 复制代码
UNSUBSCRIBE news.sports

(3)、PSUBSCRIBE pattern [pattern ...]
作用 :订阅符合某个模式的通道。模式可以包含通配符 *?,类似于 Unix shell 的文件名匹配规则。
示例:(订阅news.*格式的全部主题,之后只要发布new.开头的主题得消息,这个订阅者就都能接收到)

java 复制代码
 PSUBSCRIBE news.*

(4)、PUNSUBSCRIBE [pattern [pattern ...]]
作用 :取消订阅符合某个模式的通道。如果不指定模式,则取消订阅所有模式。
示例:(取消订阅news.*格式的全部主题)

java 复制代码
 PUNSUBSCRIBE news.*

(5)、PUBLISH channel message
作用 :向指定的通道发布一条消息。所有订阅了该通道的客户端都会收到这条消息。
返回值 :返回收到该消息的订阅者数量。
示例:(向news.sports主题中发布消息)

java 复制代码
 PUBLISH news.sports "Breaking sports news: Team A wins!"

可以看到在订阅了news.*主题后,在新的客户端发布消息可以正常打印。

学海无涯苦作舟!!!

相关推荐
黑客呀1 小时前
密码学——密码学基础、散列函数与数字签名
网络·数据库·人工智能
码猩1 小时前
C# 在dataview可以直接增删改查mysql数据库
数据库·mysql·c#
散修-小胖子2 小时前
MySQL并发控制(二):锁
数据库·mysql
Swift社区7 小时前
巧用缓存:高效实现基于 read4 的文件读取方法
缓存
Dong雨7 小时前
ShardingSphere-JDBC
java·开发语言·数据库
ok0607 小时前
oracle 取斜杠后字符
数据库·oracle
讓丄帝愛伱7 小时前
Oracle报错ORA-01653: 表xx无法通过 8192在表空间中扩展
数据库·oracle
zxrhhm7 小时前
Oracle 数据库中SERIALLY_REUSABLE包是一种特殊的包类型
数据库·oracle
东北小狐狸-Hellxz7 小时前
禁用SAP Hana错误密码锁定用户功能
数据库·hana·sap hana