10. Redis 订阅发布模式

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

Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2、client5 和 client1 之间的关系:

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

  • SUBSCRIBE channel [channel …]
    • 订阅给指定频道的信息。
  • PUBLISH channel message
    • 将信息 message 发送到指定的频道 channel

应用场景

Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

  1. 今日头条订阅号、微信订阅公众号、新浪微博关注、邮件订阅系统
  2. 即时通信系统(QQ、微信)
  3. 群聊部落系统(微信群)

案例

微信班级群class:20170101,发布订阅模型。学生 A B C:

  1. "subscribe"
  2. "redisChat"
  3. (integer) 1
1) "subscribe"
2) "class:20170101"
3) (integer) 1
1) "message"
2) "class:20170101"
3) "i love peace!"
1) "message"
2) "class:20170101"
3) "i love peace!"
1) "message"
2) "class:20170101"
3) "go to hell"
下一节:Redis事务允许一组命令在单一步骤中执行。事务有两个属性,说明如下: