Redis基础教程(十一):Redis 发布订阅

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

引言

在现代互联网应用中,实时通信已成为不可或缺的一部分,无论是即时消息、通知推送还是实时数据更新,都需要一种高效、可靠的机制来实现实时数据传输。Redis 的发布订阅(Pub/Sub)模式为构建这样的实时通信系统提供了一个简单而强大的解决方案。本文将深入探讨 Redis Pub/Sub 的工作原理、使用方法,并通过实战案例展示如何利用 Redis Pub/Sub 构建实时通信系统。

一、Redis Pub/Sub 工作原理

Redis Pub/Sub 是一种消息传递模式,它允许程序订阅频道(channel),然后在其他程序发布消息到这些频道时接收这些消息。Redis 服务器充当了消息的中介者,它接收发布者(publisher)发送的消息,并将其广播给所有已订阅该频道的订阅者(subscriber)。

命令

  1. SUBSCRIBE channel [channel ...]

    • 描述:订阅一个或多个频道的消息。
    • 示例:SUBSCRIBE news updates
  2. PUBLISH channel message

    • 描述:将消息发布到指定的频道。
    • 示例:PUBLISH news "Breaking news: New article published."
  3. PUBSUB CHANNELS [pattern]

    • 描述:列出当前所有被订阅的频道。
    • 示例:PUBSUB CHANNELS
  4. PUBSUB NUMSUB channel [channel ...]

    • 描述:返回一个或多个频道的订阅者数量。
    • 示例:PUBSUB NUMSUB news updates
  5. PUBSUB NUMPAT

    • 描述:返回当前存在的模式订阅的数量。
    • 示例:PUBSUB NUMPAT
  6. PSUBSCRIBE pattern [pattern ...]

    • 描述:订阅符合给定模式的频道。
    • 示例:PSUBSCRIBE *news*
  7. UNSUBSCRIBE [channel [channel ...]]

    • 描述:取消订阅给定的频道。
    • 示例:UNSUBSCRIBE news
  8. PUNSUBSCRIBE [pattern [pattern ...]]

    • 描述:取消订阅所有频道或符合给定模式的频道。
    • 示例:PUNSUBSCRIBE *news*

二、实战案例

场景:实时消息系统

假设我们正在开发一个实时消息系统,用户可以订阅感兴趣的频道,然后接收实时发布的消息。

步骤1:启动 Redis 服务器

确保 Redis 服务器已经在本地或远程机器上运行。

步骤2:创建订阅者

打开第一个终端窗口,使用 Redis CLI 连接到 Redis 服务器,并订阅一个频道:

bash 复制代码
redis-cli
subscribe messages

此时,终端将进入订阅模式,等待接收消息。

步骤3:创建发布者

打开第二个终端窗口,使用 Redis CLI 连接到 Redis 服务器,并向订阅的频道发布消息:

bash 复制代码
redis-cli
publish messages "Hello, this is a test message."

在第一个终端窗口中,你应该能看到如下输出:

1) "subscribe"
2) "messages"
3) (integer) 1
1) "message"
2) "messages"
3) "Hello, this is a test message."

这表明消息已经被成功发送并接收。

步骤4:多订阅者

可以在多个终端窗口中重复步骤2,订阅相同的频道,然后在发布者终端中发布消息,所有订阅者都能接收到这条消息。

步骤5:模式订阅

如果你想订阅所有以news开头的频道,可以使用模式订阅:

bash 复制代码
redis-cli
psubscribe news*

然后,向news频道或任何以news开头的频道发布消息,所有模式订阅者都将收到消息。

三、总结

Redis Pub/Sub 为实现实时通信提供了一个简洁而强大的工具。通过本文的介绍和实战案例,你不仅了解了 Redis Pub/Sub 的工作原理和基本命令,还学会了如何在实际项目中利用 Redis Pub/Sub 来构建实时消息系统。在开发需要实时数据传输的应用时,Redis Pub/Sub 可以大大简化开发流程,提高系统的实时性和响应速度。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

Redis相关文章索引 文章链接
Redis基础教程(一):redis配置 Redis基础教程(一):redis配置
Redis基础教程(二):redis数据类型 Redis基础教程(二):redis数据类型
Redis基础教程(三):redis命令 Redis基础教程(三):redis命令
Redis基础教程(四):redis键(key) Redis基础教程(四):redis键(key)
Redis基础教程(五):string字符串 Redis基础教程(五):string字符串
Redis基础教程(六):redis 哈希(Hash) Redis基础教程(六):redis 哈希(Hash)
Redis基础教程(七):redis列表(List) Redis基础教程(七):redis列表(List)
Redis基础教程(八):redis集合(Set) Redis基础教程(八):redis集合(Set)
Redis基础教程(九):redis有序集合 Redis基础教程(九):redis有序集合
Redis基础教程(十):HyperLogLog Redis基础教程(十):HyperLogLog

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
ketil273 小时前
Redis - String 字符串
数据库·redis·缓存
王佑辉5 小时前
【redis】延迟双删策略
redis
生命几十年3万天5 小时前
redis时间优化
数据库·redis·缓存
Shenqi Lotus7 小时前
Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)
redis·sentinel·cluster·failover·sharding·自动分片·水平拆分
java知路8 小时前
springboot 基于google 缓存,实现防重复提交
spring boot·后端·缓存
_.Switch9 小时前
Serverless架构与自动化运维
运维·python·缓存·自动化·运维开发
YMY哈10 小时前
Redis常见面试题(二)
redis
元气满满的热码式11 小时前
Redis常用的五大数据类型(列表List,集合set)
数据库·redis·缓存
学习路漫长12 小时前
Redis 的使⽤和原理
redis·缓存
-273K12 小时前
33.Redis多线程
数据库·redis·缓存