Redis的消息机制 - 发布订阅
2021/4/23 19:28:50
本文主要是介绍Redis的消息机制 - 发布订阅,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者、消息订阅者之间的耦合
pub/sub的特点
(1)时间非耦合
发布者和订阅者不必同时在线,它们不必同时参与交互
(2)空间非耦合
发布者和订阅者不必相互知道对方所在的位置
(3)同步非耦合
发布者/订阅者是异步模式,发布者可不断地生产消息,订阅者则可异步地得到消息通知
pub/sub的使用场景
基于pub/sub的特点,他的典型使用场景就是实时消息系统,比如即时聊天,群聊等功能
还常用作减轻高并发的I/O写压力,例如大量的写日志操作,如果实时写入日志文件或者数据库,会造成I/O超负荷,降低系统性能,那么就可以用pub/sub方式,写日志时先不进行写操作,而是向日志频道发布一条日志消息,然后有一个单独的日志程序来订阅日志频道,异步的读取日志消息写入文件或数据库
redis pub/sub的实现方式
(1)频道
SUBSCRIBE channel
通过 SUBSCRIBE 命令来订阅一个或多个频道
例如
redis> SUBSCRIBE news.it news.sport
那么当其中任何一个频道有新消息的时候,此客户端都会收到
redis 将所有频道的订阅关系都保存在pubsub_channels 字典里面
这个字典的键是某个被订阅的频道,而键的值则是一个链表,链表里面记录了所有订阅这个频道的客户端
当某频道有新消息时,就会查找对应的链表,向链表中每个客户端发送通知
(2)模式
PSUBSCRIBE pattern
通过 PSUBSCRIBE 命令来订阅所有名称符合模式的频道
例如 订阅所有名称为‘news.’开头的频道
redis> PSUBSCRIBE news.*
模式的订阅关系都保存在 pubsub_patterns 属性里面
pubsub_patterns 属性是一个链表,链表中的每个节点都包含着模式、订阅了此模式的客户端
当某频道发布新消息时,就是查找此链表,对频道名称和模式匹配,如果匹配成功,就向订阅了此模式的客户端发送通知
这篇关于Redis的消息机制 - 发布订阅的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!