发布订阅模式
通过队列的rpush和blpop可以实现消息队列,没有任何元素可以弹出的时候,连接会被阻塞。但是基于list实现的消息队列,不支持一对多的消息分发,相当于只有一个消费者。如果要实现一对多的消息分发就需要发布订阅模式。
消息的生产者和消费者是不同的客户端,连接到同一个Redis的服务。Redis的模型中是通过channel(频道)把生产者和消费者关联起来的。订阅者可以订阅一个或者多个channel,消息的发布者可以给指定的channel发布消息。只要有消息到达了channel,所有订阅了这个channel的订阅者都会收到这条消息。
举例:
订阅者订阅频道:可以一次订阅多个,比如这个客户端订阅了3个频道,频道不用实现创建。
subscribe channel-1 channel-2 channel-3
发布者可以向指定频道发布消息(并不支持一次向多个频道发送消息);
publish channel-1 fabuxiaoxile
取消订阅
unsubscribe channel-l
按规则(Pattern)订阅频道
支持?和*占位符。?代表一个字符,*代表0个或者多个字符。