Redis-消息队列

消息队列概念

消息队列不仅可以用来传输消息,还可以确保消息的安全性(持久化、确保消息被消费)

Redis消息队列实现

基于List结构模拟消息队列

非阻塞式:利用LPUSH结合RPOP、或者RPUSH结合LPOP来实现;

阻塞式:利用BLPUSH和BRPOP实现

如果已经从队列中取到了消息,但是发生宕机等情况,这条消息就会丢失,并且pop的形式也只支持单消费者(智能有一个人拿到这个消息)

基于PubSub的消息队列

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

发送的消息不会在redis中保存,如果没有人接收就会丢失。

基于Stream的消息队列

单消费模式

Stream是Redis 5.0引入的一种新数据类型,可以实现一个功能非常完善的消息队列。

发送消息命令:

读取消息的方式:

堵塞式读取方法:

当指定起始ID为¥(读取最新消息)时,如果同时来了好几条消息,会出现消息漏读的情况。

消费者组

创建消费者组:

从消费者组读取消息:

确认消息:XACK [消费者][组][消息序号]

JAVA代码实现

优点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值