Redis之发布订阅

一、Redis的发布订阅

Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。
消息订阅有两种模式,一种是频道订阅,另一种是模式订阅。
频道订阅:

SUBSCRIBE "news.it"

模式订阅:

PSUBSCRIBE "news.*"

二、发布订阅实现原理

RedisServer结构体里有一个为pubsub_channels字典,另一个为pubsub_patterns链表。第一个字典key保存着频道,value是一个链表,保存订阅该频道的客户端信息;链表则保存着订阅频道模式的客户端信息

struct redisServer {
    // ...
    //保存所有频道的订阅关系
    dict *pubsub_channels;
    list *pubsub_patterns;
    // ...
};

消息发送时,只需要遍历字典和链表,将消息发送给订阅相关频道的客户端即可

你可能感兴趣的:(redis)