消息通知
任务队列:即传递任务的队列,可以借助任务队列实现通知的过程。
任务队列的好处:松耦合,生产者和消费者无需知道彼此的实现细节;易于扩展消费者,可以有多个并可以分布在不同的服务器中。
Redis实现任务队列:使用Redis的列表类型,以及其LPUSH和RPOP命令实现队列的概念。BRPOP和BLPOP还实现了没有元素则阻塞机制。
优先级队列:优先消费紧急的消息。
可通过使用BRPOP命令实现,BRPOP可以同时接收多个键,格式如:BRPOP key [key ...]
意义是同时检测多个键,如果所有键都没有元素则阻塞,如果其中有一个键有元素则会从该键中弹出元素。如果多个键都有元素则按照从左到右的顺序取第一个键中的一个元素。
如此一来将需要优先处理的消息的键放消费顺序的前面,这样不管后面有没有元素,挤压了多少,只要前面的有元素则会优先处理。
发布/订阅模式:
分两种角色,分别是发布者和订阅者。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。
命令:PUBLISH channel message / SUBSCRIBE channel [channel ...]
按照规则订阅:使用PSUBSCRIBE命令订阅指定的规则。规则支持glob风格通配符格式。如:PSUBSCRIBE channel.?*