基于redis实现延迟队列
1. 需求背景
产品经理给你提供以下需求:
-
超过10s未支付的订单,将会被取消 -
外卖商家超过5min未接单的订单,将会被取消 -
在平台注册但30day内未登录的用户,发短信提醒 -
首次充值后30min内未解约的用户,发送优惠卷
2. 理解需求
-
首先这是一个需求。 -
其次这是一个时间滞后的需求。 -
最后这是一个延迟队列需求。
3. 做需求
-
首先你知道了这是一个延迟队列需求 -
其次你知道了该用什么存储(redis+zset) -
最后写代码完成它
4. 代码
-
消费延迟队列核心代码生产核心要素就是利用redis提供的zset集合特性来做,至于为什么选择它,大家可以自行上网学习,时间会教会你一切! -
生产消费队列核心代码生产没有什么可说的,就是往里灌数据就行了!
5. 验证
往里塞3条数据,然后开启go func让其无限监听延迟队列。
6. 结果
首先看下延迟队列数据是否是三条
在看下是否是订单1先执行,其次是订单2,最后是订单3。
订单1:订单2:订单3:
再次看下延迟队列:发现延迟队列已经没有数据了,bingo!!!
7. 总结
延迟队列思想很简单,就是利用redis的zset再配合go func就可以实现。当然还有其他思路都可以去实现它,欢迎大家多多交流。
原文始发于微信公众号(堆栈future):基于redis实现延迟队列
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103484.html