欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis消息通知

程序员文章站 2022-07-14 19:13:10
...

1、任务队列

 

松耦合:生产者与消费者无需知道彼此的实现细节,只需要约定好任务的描述格式。

 

易于扩展:消费者可以有多个,而且可以分布在不同的服务器中。

 

2、Redis实现任务队列

 

BRPOP命令和RPOP命令相似,唯一的区别是当列表中没有元素时BRPOP命令会一直阻塞住连接,直到有新元素加入。

 

BRPOP命令接收两个参数,第一个是键名,第二个是超时时间,单位是秒。

 

除了BRPOP命令外,Redis 还提供了BLPOP,和BRPOP的区别在于从队列取元素时BLPOP会从队列左边取。

 

3、优先级队列

 

BRPOP命令可以同时接收多个键,其完整的命名格式为 BRPOP key [key  ......] timeout 同时检测多个键,如果所有键都没有元素则阻塞,如果其中有一个键有元素则会从该键中弹出元素。如果多个键都有元素则按照从左到右的顺序取第一个键中的元素。

 

4、发布/订阅(publish/subscribe)模式

 

包含两种角色,分别是发布者和订阅者。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。

 

发布者发布消息的命令是 PUBLISH , 用法是 PUBLISH  channel  message        返回值表示接收到这条消息的订阅者数量。

 

订阅频道的命令是 SUBSCRIBE ,可以同时订阅多个频道,用法是 SUBSCRIBE channel [channel ......] 执行该命令后客户端会进入订阅状态。

 

进入订阅状态后客户端可能受到3种类型的回复。每种类型的回复都包含3个值,第一个值是消息的类型,根据消息类型的不同,第二、三个值的含义也不同。消息类型可能的取值有以下3个。

 

subscribe。表示订阅成功的反馈信息。第二个值是订阅成功的频道名称,第三个值是当前客户端订阅的频道数量

 

message。表示接收到的消息。第二个值表示产生消息的频道名称,第三个值是消息的内容。

 

unsubscribe。表示成功取消订阅某个频道。第二个值是对应的频道名称,第三个值是当前客户端订阅的频道数量。

 

使用 UNSUBSCRIBE 命令可以取消订阅指定的频道,用法为 UNSUBSCRIBE [channel [channel ......]] ,如果不指定频道则会取消订阅所有频道。

 

5、按照规则订阅

 

除了可以使用 SUBSCRIBE 命令订阅指定名称的频道外,还可以使用 PSUBSCRIBE 命令订阅指定的规则。规则支持 glob 风格通配符格式。PSUBSCRIBE channel.?*  channel.?* 可以匹配 channel.1.1 和 channel.1.10,但不会匹配 channel。

 

使用 PSUBSCRIBE 命令可以重复订阅一个频道(会收到两条消息)。

 

PUNSUBSCRIBE 命令可以退订指定的规则,用法是 PUNSUBSCRIBE [pattern [pattern ......]] ,如果没有参数则会退订所有规则(不会影响直接通过 SUBSCRIBE 命令订阅的频道)。

 

相关标签: Redis 消息通知