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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
fallwind_of_july6 小时前
java项目分享-分布式电商项目附软件链接
java·redis·分布式·mongodb·elasticsearch·微服务·rabbitmq
Feng.Lee9 小时前
如何判断数据来源缓存还是数据库
数据库·缓存
爱的叹息12 小时前
Spring Boot 集成 Redis中@Cacheable 和 @CachePut 的详细对比,涵盖功能、执行流程、适用场景、参数配置及代码示例
spring boot·redis·后端
死磕java的孤行者16 小时前
Redis 分布式锁
数据库·redis·分布式
lzjava202416 小时前
Redis数据结构之Set
java·数据结构·redis
bing_15817 小时前
Mybatis 如何自定义缓存?
java·缓存·mybatis
一切皆有迹可循21 小时前
IntelliJ IDEA中Spring Boot 3.4.x+集成Redis 7.x:最新配置与实战指南
spring boot·redis·intellij-idea
加油,旭杏21 小时前
【Redis】服务端高并发分布式结构
数据库·redis·分布式
Kyrie_Li1 天前
Redis-Sentinel(哨兵模式)
数据库·redis·sentinel
炬火初现1 天前
redis-cpp-cpp如何使用lua脚本
数据库·redis·lua