一、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;// ...
};
消息发送时,只需要遍历字典和链表,将消息发送给订阅相关频道的客户端即可