网站域名购买方法,国产地图软件哪个好用,江阴网站建设公司,找客户的十大方法redis的发布和订阅
在Redis中#xff0c;发布-订阅#xff08;Publish-Subscribe#xff0c;简称Pub/Sub#xff09;是一种消息传递模式#xff0c;用于在不同的客户端之间传递消息#xff0c;允许一个消息发布者将消息发送给多个订阅者。这种模式适用于解耦消息发送者和…redis的发布和订阅
在Redis中发布-订阅Publish-Subscribe简称Pub/Sub是一种消息传递模式用于在不同的客户端之间传递消息允许一个消息发布者将消息发送给多个订阅者。这种模式适用于解耦消息发送者和接收者之间的关系使得消息的发送者不需要关心消息是由哪些订阅者接收。
介绍
发布者Publisher发布者负责将消息发送到指定的频道。频道可以看作是消息的主题订阅者可以选择订阅感兴趣的频道来接收相应的消息。
订阅者Subscriber订阅者通过订阅一个或多个频道来接收发布者发送的消息。一旦订阅了某个频道订阅者就会收到该频道上的所有消息。
频道Channel频道是消息的通道发布者将消息发送到特定的频道而订阅者可以选择订阅感兴趣的频道。
消息Message消息是发布者发送给订阅者的数据。一条消息可以是任意类型的数据例如文本、JSON等。
常见命令
命令描述示例PUBLISH将消息发布到指定的频道PUBLISH news_channel “新闻Redis 发布订阅”SUBSCRIBE订阅一个或多个频道以接收发布者发送的消息SUBSCRIBE news_channelUNSUBSCRIBE取消订阅一个或多个频道停止接收消息UNSUBSCRIBE news_channelPSUBSCRIBE使用模式匹配订阅一个或多个频道接收匹配的消息PSUBSCRIBE news_*PUNSUBSCRIBE取消模式订阅停止接收通过模式匹配的消息PUNSUBSCRIBE news_*
发布订阅流程
假设我们有一个简单的消息系统其中有一个发布者Publisher和两个订阅者Subscriber_A和Subscriber_B。发布者将消息发布到一个名为“news_channel”的频道两个订阅者分别订阅了这个频道以接收发布的新闻消息。
发布者发布消息 发布者将一条新闻消息发布到名为“news_channel”的频道。使用PUBLISH命令可以完成这个操作 PUBLISH news_channel 新闻该吃瓜了订阅者A订阅频道 订阅者A通过使用SUBSCRIBE命令来订阅“news_channel”频道以便接收来自发布者的消息 SUBSCRIBE news_channel订阅者B订阅频道 同样地订阅者B也通过SUBSCRIBE命令来订阅“news_channel”频道 SUBSCRIBE news_channel发布者发布更多消息 发布者可以继续发布更多的消息到“news_channel”频道 PUBLISH news_channel 震惊cxk塌房啦订阅者接收消息 订阅者A和订阅者B都将在接收到消息后显示消息内容。他们都能看到发布者发布的消息。取消订阅 如果订阅者不再想接收消息可以通过使用UNSUBSCRIBE命令取消订阅 UNSUBSCRIBE news_channel #mermaid-svg-lqf846fQzb2ZcBBm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .error-icon{fill:#552222;}#mermaid-svg-lqf846fQzb2ZcBBm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lqf846fQzb2ZcBBm .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-lqf846fQzb2ZcBBm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lqf846fQzb2ZcBBm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lqf846fQzb2ZcBBm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lqf846fQzb2ZcBBm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lqf846fQzb2ZcBBm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lqf846fQzb2ZcBBm .marker.cross{stroke:#333333;}#mermaid-svg-lqf846fQzb2ZcBBm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lqf846fQzb2ZcBBm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .cluster-label text{fill:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .cluster-label span{color:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .label text,#mermaid-svg-lqf846fQzb2ZcBBm span{fill:#333;color:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .node rect,#mermaid-svg-lqf846fQzb2ZcBBm .node circle,#mermaid-svg-lqf846fQzb2ZcBBm .node ellipse,#mermaid-svg-lqf846fQzb2ZcBBm .node polygon,#mermaid-svg-lqf846fQzb2ZcBBm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lqf846fQzb2ZcBBm .node .label{text-align:center;}#mermaid-svg-lqf846fQzb2ZcBBm .node.clickable{cursor:pointer;}#mermaid-svg-lqf846fQzb2ZcBBm .arrowheadPath{fill:#333333;}#mermaid-svg-lqf846fQzb2ZcBBm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lqf846fQzb2ZcBBm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lqf846fQzb2ZcBBm .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-lqf846fQzb2ZcBBm .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-lqf846fQzb2ZcBBm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lqf846fQzb2ZcBBm .cluster text{fill:#333;}#mermaid-svg-lqf846fQzb2ZcBBm .cluster span{color:#333;}#mermaid-svg-lqf846fQzb2ZcBBm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lqf846fQzb2ZcBBm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 发布消息 订阅频道 订阅频道 传递消息 传递消息 发布者 Redis服务器 订阅者A 订阅者B 发布订阅的优缺点
优点
优点描述简单的实时通信适用于需要实时传递消息的场景如实时监控、聊天应用等解耦发布者和订阅者发布者和订阅者之间的解耦降低了系统复杂性广播消息一条消息可以同时传递给所有订阅了相应频道的订阅者简单的模式订阅支持通过通配符订阅多个频道方便实现特定模式下的消息订阅低延迟Redis的内存数据库特性使得发布-订阅模式具有低延迟
缺点
缺点描述消息的可靠性和持久性不保证消息的可靠传递和持久性存储需要额外的机制顺序性问题无法保证消息的传递顺序订阅者接收消息的顺序可能不一致消息堆积和延迟订阅者处理消息速度不足时可能导致消息堆积和延迟扩展性问题随着订阅者数量增加Redis服务器负载可能增加需要考虑扩展性单一服务器限制仅在单个Redis服务器内工作不适用于分布式消息队列无法重播历史消息订阅者只能接收自订阅后发布的消息无法获取历史消息