Redisson实现订单到期关闭
Redission 中定义了分布式延迟队列 RDelayedQueue,这是一种基于 zset 结构实现的延时队列,它允许以指定的延迟时长将元素放到目标队列中。
实现订单到期关闭不同方案的完整性对比参考:
Redission ≈ RabbitMQ 插件 > kafka 时间轮 > Redis 的 zset ≈ RocketMQ 延迟消息 ≈ RabbitMQ 死信队列 > Redis 过期监听 > 定时任务 > Netty 的时间轮 > JDK 自带的 DelayQueue > 被动关闭
简介
Redission 中定义了分布式延迟队列 RDelayedQueue,这是一种基于我们前面介绍过的 zset 结构实现的延时队列,它允许以指定的延迟时长将元素放到目标队列中。
其实就是在 zset 的基础上增加了一个基于内存的延迟队列。当我们要添加一个数据到延迟队列的时候,redission 会把数据 + 超时时间放到 zset 中,并且起一个延时任务,当任务到期的时候,再去 zset 中把数据取出来,返回给客户端使用。
基于 Redisson 的实现方式,是可以解决基于 zset 方案中的并发重复问题的,而且还能实现方式也比较简单,稳定性、性能都比较高。