Redis如何做消息队列

Redis做消息队列,有两种实现方式:

第一种:通过数据结构List来实现

f049f7c5006ceddd14c375963bf9962d4f246ef9

优点:能够实现持久化;支持集群;接口使用简单

缺点:

  • 如上图所示,一条消息只会被一个消费者消费,所以不存在有多个消费者消费一条消息
  • 生产者和消费者的高可用或崩溃后的处理机制需要自己实现
  • 当生产者消息写入太快,消费者消费太慢,则有可能会导致内存溢出问题,导致进程crash

第二种:通过pub/sub来实现

3bae0bb48c45e073efab145a9cfef2dc4306d3ca

优点:

一个生产者可以对应多个消费者,但是必须保证消息发布者和消息的订阅者同时在线,否则,否则一旦消息订阅者由于各种异常情况而被迫断开连接,在其重新连接后,其离线期间的消息是无法被重新通知的(即发即弃)。当然,生产者不需要关心有多少的订阅者,也不用关心订阅者的具体信息,而订阅者可以根据需要自由选择订阅哪些频道:支持集群;接口使用简单等。

缺点:

  • 没有持久化机制,属于即发即弃模式,因此也不需要制定消息的备份和恢复机制
  • Redis没有提供保证pub/sub消息性能的方案
  • 当大量的消息到达Redis服务时,如果订阅者不能及时完成消费,则就会导致消息堆积,引发上面一样的内存问题      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值