Redis消息队列

1.1 Redis发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。支持频道channel和模式pattern两种模式。


缺点:发布订阅模式是无法持久化的,如果出现网络断开、Redis 宕机等,消息就会被丢弃;
优点:支持多组生产者、消费者处理消息

1.2 Redis 基于List做队列

生产者使用 LPUSH 发布消息,消费者使用 BRPOP 拉取消息。


缺点:
1、不支持重复消费:消费者拉取消息后,这条消息就从List 中删除了,无法被其它消费者再次消费,即不支持多个消费者消费同一批数据
2、消息丢失:消费者拉取到消息后,如果发生异常宕机,那这条消息就丢失了

优点:简单易用,支持持久化

1.3 Redis 基于Stream做队列

基于消息链表实现,将所有加入的消息都串起来,每个消息都有一个唯一的 ID 和对应的内容
Consumer Group:消费者组,一个消费组有多个消费者
last_delivered_id:游标,任意一个消费者读取了消息都会使游标往前移动
pending_ids:消费者(Consumer)的状态变量,作用是维护消费者的未确认的 id。 pending_ids 记录了当前已经被客户端读取的消息,但是还没有 ack

优点:
支持阻塞式拉消息
支持发布 / 订阅模式
支持多播、ACK、消息转移
缺点:len限制、也有可能丢消息(aof、主从切换)

1.4 Redis 消息队列总结

List

Pub/Sub

Stream

阻塞式消费

支持

支持

支持

发布/订阅

不支持

支持

支持

重复消费

不支持

不支持

支持

持久化

支持

不支持

支持

消息堆积

内存持续增长

缓冲区溢出,消费者强制下线

可控制队列最大长度

消息是否会丢

Redis本身不保证数据完整性,有可能存在数据丢失

消息积压能力

Redis数据存储在内存,消息堆积对内存压力较大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值