redis点滴(三)发布与订阅

subscribe.unsubscribe和publish 三个命令实现了发布与订阅信息泛型,在这个实现中,发送者不是将消息发送给指定的接收者,而是将信息发送给频道,然后由频道将信息转发给所有对这个频道感兴趣的订阅者。

发送者无须知道任何关于订阅者的信息,而订阅者也不须知道是哪个客户端给它发送信息,它只要关注感兴趣的频道即可。

信息的格式

频道转发的每条信息都是一条带有三个元素的多条批复

信息的第一个元素标识了信息的类型:

subscribe:表示当前客户端成功地订阅了信息第二个元素所指示的频道。而信息的第三个则记录了目前客户端已订阅频道的总数。

unsubscribe:表示当前客户端成功地退订了信息第二个元素所指示的频道。信息的第三个元素记录了客户端目前仍在订阅的频道的数量。当客户端订阅的频道降为0时,客户端不订阅任何频道,它可以像往常一样,执行任何redis命令

message:表示这条信息是由某个客户端执行publish命令所发送的真正的信息。信息的第二个元素是信息来源的频道,而第三个元素时信息的内容

举个例子,如果客户端执行以下命令:

 redis-> subscribe first second

 那么它就会收到以下回复:

1):“subscribe” 

2):“first”

3):(integer)1


1):“subscribe”

2):“second”

 3):(integer)2

如果在这时,另外一个客户执行以下publish命令:

redis->publish second hello

那么之前的订阅了second频道的客户端将收到以下信息:

1) "mesage"

2) "second"

3) "hello"

当订阅者决定退订所有频道时,它可以执行一个无参数的unsubscribe命令:

redis->unsubscibe

订阅模式

redis 发布与订阅者支持模式匹配:客户端可以订阅一个带*号的模式,如果某个/某些频道的名字和这个模式匹配,那么当有信息发送给这个/这些频道的时候,客户端也会收到这个/这些频道的信息。

比如说,执行命令

pusubscribe news.*

的客户端将收到来自new.music.jazz,news.art等频道的信息,客户端订阅的模式里面可以包含多个glob风格的通配符,比如* . ? 等。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值