发布订阅模式
MQ 系统
Redis 提供了两种方式来作消息队列:
生产者/消费者模式 模式 (采用 redis 的 list 类型)
一个或者多个客户端监听消息队列, 一旦消息到达, 消费者马上消费, 谁先抢到算谁的, 如果队列里没有消息, 则消费者继续监听
发布/订阅 模式 (redis 自实现的一种观察者模式)
一个或多个客户端订阅消息频道, 只要发布者发布消息, 所有订阅者都能收到消息
简单的说
第一种队列方式, 一个任务只会被一个客户端消费
第二种队列方式, 一个任务会被所有客户端消费
发布订阅模式
这可以说是一种观察者模式 发布订阅模式中有两个角色: 发布者 和 订阅者 订阅者可以订阅一个或多个频道(channel) 发布者可以向指定频道发布消息(publish) Ï 所以订阅了该频道的订阅者都将接受到该消息.
subscribe 订阅
subscribe channel1 channel2 ...
订阅一个或多个频道
如 subscribe news.it
使用 subscribe 时的返回值
1) "subscribe"
返回值的类型: 显示订阅成功
2) "news.it"
订阅的频道
3) (integer) 1
目前已订阅的模式的数量(包含自身)
接收到消息时的返回值
1) "message"
返回值的类型: 消息
2) "news.it"
消息本身的频道
3) "Google buy Motorola"
消息的内容
unsubscribe 退订
unsubscribe channe1 channe2 ...
退订通过 subscribe 订阅的频道
如果没有频道被指定, 那么客户端通过 subscribe 订阅的所有频道都会被退订
psubscribe 订阅(RegEx)
psubscribe mode1 mode2 ...
订阅一个或多个符合给定模式(RegEx)的频道
* 匹配所有字符
? 匹配一个任意字符
[] 匹配字符组
\x 匹配转义字符
如 psubscribe news.*
使用 subscribe 时的返回值
1) "ppsubscribe"
返回值的类型: 显示订阅成功
2) "news.*"
订阅的频道模式
3) (integer) 1
目前已订阅的模式的数量(包含自身)
接收到消息时的返回值
1) "pmessage"
返回值的类型: 消息
2) "news.*"
消息匹配的频道模式
3) "news.it"
消息本身的频道
4) "Google buy Motorola"
消息的内容
punsubscribe 退订
punsubscribe mode1 mode2 ...
退订通过 psubscribe 订阅的频道
如果没有频道被指定, 那么客户端通过 psubscribe 订阅的所有频道都会被退订
publish 发布
publish channel message
发布消息, 返回接收到这个消息的客户端个数
pubsub 自省
pubsub 是一个查看订阅与发布系统状态的内省命令,它由数个不同格式的子命令组成.
Last updated