Redis3.0--发布与订阅

Redis的发布与订阅功能包括SUBSCRIBE、PSUBSCRIBE等命令。客户端订阅频道后,当其他客户端向频道发送消息时,所有订阅者都会收到。SUBSCRIBE命令将客户端与频道建立订阅关系,UNSUBSCRIBE命令用于退订。PSUBSCRIBE用于订阅模式,PUNSUBSCRIBE用于退订模式。PUBLISH命令可以将消息发送给频道订阅者和模式订阅者。PUBSUB命令用于查看订阅信息。
摘要由CSDN通过智能技术生成

简介

 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。
 通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者:每当有其他客户端向被订阅的频道发送消息时,频道的所有订阅者都会收到这条消息。
 除了订阅频道之外,客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式,从而成为这些模式的订阅者:每当有其他客户端向某个频道发送消息时,消息不仅会被发送给这个频道的所有订阅者,它还会被发送给所有与这个频道相匹配的模式的订阅者。

频道的订阅与退订

 当一个客户端执行SUBSCRIBE命令订阅某个或某些频道的时候,这个客户端与被订阅者频道之间就建立起了一种订阅关系。
 Redis将所有频道的订阅关系都保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值则是一个链表,链表里面记录了所有订阅这个频道的客户端:

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

订阅频道(SUBSCRIBE命令)

 每当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候,服务器都会将客户端与被订阅的频道在pubsub_channels字典中进行关联。
 根据频道是否已经有其他订阅者,关联操作分为两种情况执行:

  • 如果频道已经有其他订阅者,那么它在pubsub_channels字典中必然有相应的订阅者链表,程序只要将客户端添加到订阅者链表的末
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值