开发者社区> 问答> 正文

发布消息到Redis频道时,消息是如何被分发给订阅者的?

发布消息到Redis频道时,消息是如何被分发给订阅者的?

展开
收起
不吃核桃 2024-08-14 08:00:21 29 0
1 条回答
写回答
取消 提交回答
  • 当发布者发布消息到Redis频道时,Redis会首先遍历pubsub_channels字典中该频道对应的链表,将消息发送给所有订阅了该频道的客户端。然后,Redis会遍历pubsub_patterns链表,检查是否有模式与发布的频道匹配,如果匹配,则将消息发送给订阅了该模式的所有客户端。伪代码如下:

    python
        def PUBLISH(channel, message): 
        # 遍历所有订阅频道 channel 的客户端 
        for client in server.pubsub_channels[channel]: 
        send_message(client, message) 
        # 遍历所有模式,检查与频道的匹配 
        for pattern, client in server.pubsub_patterns: 
        if match(channel, pattern): 
        send_message(client, message)
    
    2024-08-14 08:52:46
    赞同 5 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载