Redis的发布订阅

320 阅读1分钟

简介

进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

下图展示了频道channel1,以及订阅这个频道的三个客户端--client2、client5和client1之间的关系:

当有新的消息通过publish命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端:

命令

PSUBSCRIBE pattern [pattern ...]

订阅一个或者多个符合给点模式的频道

支持的模式

  • h?llo: ?代表任意字符,比如hello, hallo,hxllo
  • h*llo: *代表0个或者任意多个字符,比如hllo, haeeeell
  • h[ae]llo: []代表在集合中挑选一个字符,比如hallo,hello

如果想输入普通的字符,可以通过前面加上\

PUBSUB subcommand [argument [argument ...]]

查看订阅与发布系统的状态

PUBLISH channel message

将信息发送到指定的频道

PUNSUBSCRIBE [pattern [pattern ...]]

退订所有给定模式的频道

SUBSCRIBE channel [channel ...]

订阅给定的一个或者多个频道的信息

UNSUBSCRIBE [channel [channel ...]

退订指定的频道

案例

案例1

  1. 使用subscribe命令订阅c1 c2 c3三个频道
  2. 在另外一个客户端中分别向c2,c1等频道发送消息

案例2

  1. 使用psubscribe命令订阅new*模式的频道
  2. 在另外一个客户端中分别向new1,new13等频道发送信息

总结

Redis虽然提供了Pub/Sub机制,但是很少将其作为消息中间件使用,所以这里只做简单的介绍,大概了解一下,有这么个东西即可。