Redis学习笔记 - 发布订阅

白菜1031

什么是发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

角色

  • 发布者(publisher)
  • 订阅者(subscriber)
  • 频道 (channel)

订阅一个频道

图片描述

订阅多个频道

图片描述

常用命令

publish channel message

  • 发布命令

subscribe [channel ...]

  • 订阅一个或多个频道

unsubscribe [channel ...]

  • 取消订阅一个或多个频道

示例

  • 订阅者1客户端 (订阅channel:1频道)
127.0.0.1:6379> subscribe channel:1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
  • 订阅者2客户端 (订阅 channel:1 和 channel:2 两个频道)
127.0.0.1:6379> subscribe channel:1 channel:2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2

  • 发布者客户端 - 向 channel:1 频道发布内容
127.0.0.1:6379> publish channel:1 hello
(integer) 2 # 订阅者个数,说明有两个订阅者订阅该频道。
  • 订阅者1客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
  • 订阅者2客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"

  • 发布者客户端 - 向 channel:2 频道发布内容
127.0.0.1:6379> publish channel:2 world
(integer) 1 # 订阅者个数,说明有1个订阅者订阅该频道。
  • 订阅者1客户端 - 未收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
  • 订阅者2客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"
1) "message"
2) "channel:2"
3) "world"

其他API

1. psubscribe [pattern...]

  • 订阅正则表达式匹配的频道

2. punsubscribe [pattern...]

  • 退订正则表达式匹配的频道

3.pubsub channels

  • 列出至少有一个订阅者的频道

4.pubsub numsub [channel...]

  • 列出给定频道的订阅者数量
阅读 2.2k

全栈札记
欢迎关注同名公众号。全栈工程师成长札记。 主要记录MySQL、Redis、ElasticSearch、MongoDB、Linux、She...
5.3k 声望
1.6k 粉丝
0 条评论
5.3k 声望
1.6k 粉丝
文章目录
宣传栏