您的当前位置:首页正文

十三: redis--发布订阅模式使用及场景

2024-11-30 来源:个人技术集锦

十三: redis–发布订阅模式使用及场景

发布订阅模式一般用来做广播,发布者发送消息到指定的通道,订阅者订阅指定的通道,
当发布者发送了新的消息,订阅者可以马上收到消息,一个通道可以有多个订阅者,后面订阅的
订阅者不能收到之前的消息,因为发布订阅不做消息持久化以及ack确认消息消费。所以如果
做消息队列是不能满足生产消息不能丢失的情况,已经吞吐率。

命令

publish

  • 解释
    发送消息到指定通道
    返回的结果表示有少个订阅者

  • 用法 publish channelName msg

  • 示例

127.0.0.1:6379> publish channel1 123
(integer)0

subscribe

  • 解释
    订阅指定通道

  • 用法 subscribe channelName
    当终端启用了redis-cli命令 ,订阅了通道
    消息进入订阅模式,此时终端只能接收通道消息,退出按Crtl + c;
    如果是其他编程类客户端(java,c),进入订阅模式后,
    那么此时也只能使用unsubscribe、punsubscribe、subscribe,psubscribe,

    psubscribe: 订阅通道可以使用匹配如:psubscribe h*llo
    则可以匹配: hello、hlllo、h2ll0…

  • 示例

/**
* 订阅消息
**/
127.0.0.1:6379> subscribe msg 
1) "subscribe"
2) "msg"
3) (integer) 1

127.0.0.1:6379> publish msg 123
(integer)1

/**
* 收到订阅通道的消息
**/
127.0.0.1:6379> subscribe msg 
1) "message"
2) "msg"
3) "123"

场景

  • 实时聊天室(消息可以异步落到数据库持久化)成员订阅同一个通道,并且发布消息在同一个通道
  • 简单的消息队列场景,能容忍丢失率的情况(严格的情况下请使用专业的消息队列MQ)

参考

显示全文