Redis(四)Pub/Sub

发布与订阅

Pub/Sub模式应该非常熟悉,在现实应用中被广泛的使用。如:微博中关注某个号,这个号有发新博时,关注的都会收到;github上watch了某个项目,当有issue时,就会发邮件。

Redis是支持发布与订阅的,当然大多数场景中可以使用MQ达到同样的效果。

Redis中支持的发布与订阅

Redis中是以订阅某个或者多个频道Channel,表示其感兴趣的内容。当有发布者向频道Channel中发布消息时,订阅者就可以收到其感兴趣的消息。订阅者和发布者之间去耦合

Redis通过三个命令Subscribe/UnSubscribe/Publish三者完成订阅与发布。

  • Subscribe订阅某个或者多个频道Channel
  • UnSubscribe取消订阅
  • Publish向某个频道发布消息

1.订阅单个频道

subscribe foo

2.订阅多个频道

subscribe foo bar

3.模式订阅

psubscribe foo.*

4.发布消息

publish foo message

5.取消订阅

unsubscribe foo

Redis发布订阅的格式

订阅时、取消订阅时、收到的订阅的消息都响应都将以数组的形式体现,如:

127.0.0.1:6379> subscribe foo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "foo"
3) (integer) 1



1) "message"
2) "foo"
3) "m1"
  • 第一元素表示操作类型:订阅、取消订阅、消息
  • 第二个元素表示订阅的频道、收到哪个频道的消息
  • 第三个元素表示订阅了第几个频道、承载的消息体

Redis的发布订阅作用域

  • Redis的发布订阅与与键空间是独立的,对键空间没有任和影响;
  • Redis中的模式订阅,将订阅模式匹配上的所有频道;
  • 只支持对订阅后的发布的消息获取,不支持获取订阅前发布的消息将;

对于java版本的jedis操作发布订阅可查看PublishSubscribeCommandsTest.java

应用场景

对于不可靠的、轻量级消息传递型的发布与订阅可以考虑使用,因为比较轻量级易于使用。但是大多数发布订阅还是使用MQ比较合适。

参考

Pub/Sub

posted @ 2018-10-22 10:40  怀瑾握瑜XI  阅读(393)  评论(0编辑  收藏  举报