redis的消息队列

redis的消息队列

消息队列主要分两种,redis都支持:

  • 生产者消费者模式
  • 发布者订阅者模式

生产者消费者模式:

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

原理:

队列当中的消息由不同的生产者写入,也会有不同的消费者取出进行消费处理,但是一个消息一定是只能被取出一次也就是被消费一次
此模式在分布式业务架构中非常常用,比较常用的软件还有RabbitMQ、Kafka、RocketMQ、ActiveMQ等
image

使用生产者消费者模式:

生产消息:

lpush 队列名 消息1 消息2 ...

消费消息:

rpop 队列名

查看队列消息:

lrange 队列名 起始下标 结束下标

例: 生产消费

#生产消息
LPUSH c1 msg1
LPUSH c1 msg2 msg3 msg4 msg5
lrange c1 0 6

#消费消息
rpop c1

image

发布者订阅模式:

原理:

在发布者订阅者模式下,发布者将消息发布到指定的channel里面,凡是监听该channel的消费者都会收到同样的一份消息,这种模式类似于是收音机的广播模式,即凡是收听某个频道的听众都会收到主持人发布的相同的消息内容
需要先订阅后发布,因为先发布了,再订阅时,订阅者不能再看了之前发的消息,也就是看不到历史消息

  • Subscriber:订阅者
  • Publisher:发布者
  • Channel:频道

image

应用场景:

  • 此模式常用语群聊天、群通知、群公告等场景

使用发布者订阅模式:

订阅频道:

subscribe 频道1 频道2 ...

发布消息:

publish 频道 消息

例: 订阅发布

#订阅频道
subscribe 222

#发布消息
publish 222 test

image
image

posted @ 2022-02-15 20:55  suyanhj  阅读(665)  评论(0)    收藏  举报