Redis发布订阅

Posted 飞鸿影的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis发布订阅相关的知识,希望对你有一定的参考价值。

适用场景

  • 直播消息
  • 弹幕消息
  • 粉丝订阅消息推送

知识点

1、关键字:PUBLISH SUBSCRIBE PSUBSCRIBE

  • Redis采用PUBLISH命令发送消息,其返回值为接收到该消息的订阅者的数量。
  • Redis采用SUBSCRIBE命令订阅某个频道,其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道。

2、示例:

redis 127.0.0.1:6379> PUBLISH  c1 "test"
(integer) 0

redis 127.0.0.1:6379> PUBLISH  c2 "test"
(integer) 0
redis 127.0.0.1:6379> SUBSCRIBE c1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "c1"
3) (integer) 1

1) "message"
2) "c1"
3) "test"

Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。

3、支持模式匹配
客户端可以使用命令PSUBSCRIBE一次性订阅符合模式匹配的多个频道,例如:

redis 127.0.0.1:6379> PSUBSCRIBE c*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "c*"
3) (integer) 1

1) "pmessage"
2) "c*"
3) "c2"
4) "test2"

c* 表示任意c开头的频道。

4、注意:

  • 订阅方可以提前预定,即使频道不存在。
  • 订阅方只能收到订阅之后的消息,订阅之前的消息收不到。

参考

1、Redis发布订阅机制 - yitudake - 博客园
https://www.cnblogs.com/yitudake/p/6747995.html

以上是关于Redis发布订阅的主要内容,如果未能解决你的问题,请参考以下文章

20 发布订阅 相关操作

20 发布订阅 相关操作

Redis发布订阅功能介绍,生产场景使用及性能测试

redis发布与订阅

[Redis]发布/订阅

我在生产项目里是如何使用Redis发布订阅的?Java版代码实现(含源码)