redis 发布与订阅

命令列举

  • SUBSCRIBE <channel [channel]>:订阅频道,以接收发送到这个频道的消息
  • PUBLISH <channel> <message>: 该命令会向频道发送消息,所有订阅频道的订阅者都会收到消息
  • PSUBSCRIBE <channel_pattern>:这是接受正则表达式的SUBSCRIBE命令,可以订阅符合某个模式的所有频道
  • UNSUBSCRIBE:退订,命令格式与SUBSCRIBE类似,作用与其相反
  • PUNSUBSCRIBE:退订模式,命令格式与PSUBSCRIBE类似,作用于其相反
  • PUBSUB CHANNELS [pattern]:返回服务器当前被订阅的频道,pattern可选,表示符合pattern模式的频道,不写则返回所有频道
  • PUBSUB NUMSUB <channel> [...<channel>]:返回指定channel的订阅客户端数量,channel可输入多个
  • PUBSUB NUMPAT:返回被订阅模式的数量,没有参数

实现

  • 频道的订阅与退订,是在操作redisServer结构体内的字典pubsub_channels,字典的键是被订阅的频道,值是所有客户端的链表,每次执行SUBSCRIBE命令和UNSUBSCRIBE都是操作字典
  • 模式的订阅与退订,是在操作redisServer结构体内的链表pubsub_patterns,元素是pubsubPattern结构体,该结构体包含订阅的频道模式和客户端。每次执行PSUBSCRIBE和PUNSUBSCRIBE命令,都是对链表进行增删,链表没有去重
  • 发送消息:通过channel获取pubsub_channels的值,也就是一个客户端的链表,给其中所有的客户端发送消息;此外,还需遍历pubsub_patterns,匹配所有符合的模式,并给对应的客户端发送消息
  • PUBSUB CHANNELS返回所有被订阅频道:是通过遍历pubsub_channels字典的键实现的,所以在pubsub_patterns中的并不返回
  • PUBSUB NUMSUB:通过遍历pubsub_channels字典各指定channel对应链表的长度返回
  • PUBSUB NUMPAT:返回pubsub_patterns的长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值