当前位置:   article > 正文

redis--消息队列

redis--消息队列

分类

生产者消费模式

发布者订阅模式

生产者消费模式

在生产者消费者(Producer/Consumer)模式下,上层应用接收到的外部请求后开始处理其当前步骤的操作,在执行完成后将已经完成的操作发送至指定的频道(channel)当中,并由其下层的应用监听该频道并继续下一步的操作,如果其处理完成后没有下一步的操作就直接返回数据给外部请求,如果还有下一步的操作就再将任务发布到另外一个频道,由另外一个消费者继续监听和处理。

模式介绍

生产者消费者模式下,多个消费者同时监听一个队里,但是一个消息只能被最先抢到消息的消费者消费,即消息任务是一次性读取和处理,此模式在分布式业务架构中非常常用,比较常用的软件还有RabbitMQ、Kafka、RocketMQ、ActiveMQ等

 队列介绍

队列当中的 消息由不同的生产者写入也会有不同的消费者取出进行消费处理,但是一个消息一定是只能被取出一次也就是被消费一次

 生产者发布消息

  1. 127.0.0.1:6379> lrange channell 0 -1
  2. 1) "x2"
  3. 2) "x1"
  4. 127.0.0.1:6379> lpush channell x3
  5. (integer) 3
  6. 127.0.0.1:6379> lpush channell x4
  7. (integer) 4
  8. 127.0.0.1:6379> lpush channell x5
  9. (integer) 5

查看队列所有消息

  1. 127.0.0.1:6379> lrange channell 0 -1
  2. 1) "x5"
  3. 2) "x4"
  4. 3) "x3"
  5. 4) "x2"
  6. 5) "x1"

消费者消费消息

  1. 127.0.0.1:6379> rpop channell
  2. "x1"
  3. 127.0.0.1:6379> rpop channell
  4. "x2"
  5. 127.0.0.1:6379> rpop channell
  6. "x3"
  7. 127.0.0.1:6379> rpop channell
  8. "x4"
  9. 127.0.0.1:6379> rpop channell
  10. "x5"
  11. 127.0.0.1:6379> rpop channell
  12. (nil)
  13. 127.0.0.1:6379>

再次查看队列消息

  1. 127.0.0.1:6379> lrange channell 0 -1
  2. (empty array)

发布者订阅模式

模式简介

在发布者订阅者模式下,发布者将消息发布到指定的channel里面,凡是监听该channel的消费者都会收到同样的一份消息,这种模式类似于是收音机的广播模式,即凡是收听某个频道的听众都会收到主持人发布的相同的消息内容

此模式常用语群聊天、群通知、群公告等场景。
Subscriber:订阅者
Publisher:发布者
Channel:频道

 

 订阅者监听频道

  1. 订阅一个频道
  2. 127.0.0.1:6379> subscribe channel1
  3. Reading messages... (press Ctrl-C to quit)
  4. 1) "subscribe"
  5. 2) "channel1"
  6. 3) (integer) 1
  7. 1) "message"
  8. 订阅多个频道
  9. 127.0.0.1:6379> subscribe channel1 channel2
  10. Reading messages... (press Ctrl-C to quit)
  11. 1) "subscribe"
  12. 2) "channel1"
  13. 3) (integer) 1
  14. 1) "subscribe"
  15. 2) "channel2"
  16. 3) (integer) 2
  17. 订阅匹配频道
  18. 127.0.0.1:6379> psubscribe chann*
  19. Reading messages... (press Ctrl-C to quit)
  20. 1) "psubscribe"
  21. 2) "chann*"
  22. 3) (integer) 1
  23. 订阅所有频道
  24. 127.0.0.1:6379> psubscribe *
  25. Reading messages... (press Ctrl-C to quit)
  26. 1) "psubscribe"
  27. 2) "*"
  28. 3) (integer) 1

发布者发布消息

  1. 127.0.0.1:6379> publish channel1 test
  2. (integer) 1

验证消息

  1. 127.0.0.1:6379> subscribe channel1
  2. Reading messages... (press Ctrl-C to quit)
  3. 1) "subscribe"
  4. 2) "channel1"
  5. 3) (integer) 1
  6. 1) "message"
  7. 2) "channel1"
  8. 3) "test"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/613155
推荐阅读
相关标签
  

闽ICP备14008679号