Redis 学习笔记(十一)redis订阅和发布

redis 发布订阅(pub/sub)是一种信息通信模式。发送者(pub)发送消息,订阅者(sub)接收消息。

redis订阅频道(channel)

需要先订阅频道,再向频道发送消息。

redis 发布订阅的原理:

通过 subscribe 命令订阅频道后,redis-server 中将维护一个字典,字典的键是频道名,值是一个链表,链表中保存了所有订阅了该频道的客户端(subscribe 命令就是将客户端添加到指定频道的链表中)。

订阅频道命令

  subscribe <channel> ...     #订阅频道  ,一旦客户端进入订阅状态,客户端就只可接受订阅相关的命令:
                              #SUBSCRIBE、PSUBSCRIBE、UNSUBSCRIBE和PUNSUBSCRIBE
                              #除了这些命令,其他命令一律失效。

通过 publish 命令发送信息,redis-server 会使用指定的频道为键,在自身维护的字典中查找频道链表中的所有客户端,遍历链表将消息发布给订阅者。

发布命令

  publish <channel> <message>   #将信息 message 发送到指定的频道 channel
                                #返回值为接收到消息的客户端数量

redis订阅模式(pattern)

在这里引用图片以便更好的理解订阅模式
订阅模式图解
模式匹配了两个频道,当其中一个频道接收到了发布者发送的消息,这个频道的所有订阅客户端都会收到消息,且订阅了模式的所有客户端也会收到消息。

订阅模式命令:

  psubscribe <pattern> ...  #订阅指定的模式pattern:pattern参数可以使用匹配符
                            #h?llo 模式可以匹配到hello、hallo、hxllo等频道
                            #h*llo 模式可以匹配到hllo、heeeello等频道
                            #h[ae]llo 模式可以匹配到hello和hallo频道,但是匹配不到hxllo频道

退订

退订频道命令:

  unsubscribe <channel> ...  #退订指定的频道,如果没有指定频道参数,则退订所有的频道

退订模式命令:

  unpsubscribe <pattern> ...  #退订指定的模式,如果没有指定模式参数,则退订所有的模式

退出redis-cli客户端会自动退订。

自省(监测状态)

查看活跃的频道:

  pubsub channels <pattern>  #获取至少有一个订阅者的频道,
                             #pattern参数为空则列出所有活跃频道,参数有值时只列出与模式匹配的活跃频道

查看指定频道的订阅者数量:

  pubsub numsub <channel> ... #依次获取指定频道的订阅者数量(不包含订阅模式的订阅者)

查看客户端订阅的模式数量:

  pubsub numpat    #返回订阅模式的数量

redis发布订阅应用场景

1、实时信息系统(网站的公告)

2、实时聊天(将频道当做聊天室)

3、用户的订阅和关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值