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

相关推荐
爬山算法4 小时前
Redis(69)Redis分布式锁的优点和缺点是什么?
数据库·redis·分布式
2401_837088505 小时前
Redis通用命令
数据库·redis·缓存
zl9798995 小时前
Redis-缓存问题(穿透、击穿、雪崩)
redis
来旺10 小时前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
摇滚侠10 小时前
Spring Boot 3零基础教程,yml文件中配置和类的属性绑定,笔记15
spring boot·redis·笔记
摇滚侠11 小时前
Spring Boot 3零基础教程,WEB 开发 HTTP 缓存机制 笔记29
spring boot·笔记·缓存
cr7xin11 小时前
基于Session和Redis实现短信验证码登录
数据库·redis·缓存
DemonAvenger13 小时前
深入浅出 Redis 布隆过滤器:从原理到实战,10 年经验总结
数据库·redis·性能优化
爬山算法1 天前
Redis(66)Redis如何实现分布式锁?
数据库·redis·分布式
恋红尘1 天前
Redis面试八股
数据库·redis·面试