当前位置:   article > 正文

Redis消息队列

redis消息队列

Redis提供了三种不同的方式来实现消息队列

  • list结构:基于List结构模拟消息队列
  • PubSub:基本的点对点消息模型
  • Stream:比较完善的消息队列模型

 1. 基于List结构模拟消息队列

LPUSH 结合 RPOP、或者 RPUSH 结合 LPOP来实现。

不过要注意的是,当队列中没有消息时RPOP或LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。因此这里应该使用BRPOP或者BLPOP来实现阻塞效果。

优点

  • 利用Redis存储,不受限于JVM内存上限
  • 基于Redis的持久化机制,数据安全性有保证
  • 可以满足消息有序性

缺点

  • 无法避免消息丢失
  • 只支持单消费者 

2. 基于PubSub的消息队列 

PubSub(发布订阅)是Redis2.0版本引入的消息传递模型。顾名思义,消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息。 

命令:

  • SUBSCRIBE channel [channel] :订阅一个或多个频道  
  • PUBLISH channel msg :向一个频道发送消息  
  • PSUBSCRIBE pattern[pattern] :订阅与pattern格式匹配的所有频道 

 pattern:

  • ?:匹配一个字符
  • *:匹配0或多个字符
  • [a,e]:匹配括号内存在的字符

 优点:

  • 采用发布订阅模型,支
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号