使用redis延迟队列实现订单过期

可以基于redis的有序集合实现延迟队列,比如某个时间给某个用户发短信,订单过期处理,等等。。。这里说一下基于延迟队列实现订单过期,只说思路,不会给出具体的实现代码

前言

需要对redis的有序集合有一个基本的认识,包括但不限于熟练掌握和使用有序集合的相关操作命令

基本思路

1、订单下单成功,则 zadd key score value

     其中key是固定值, 比如说是:orderset

     score 是过期的时间戳值,比如说:time() + 10 表示当前下订单的时间,10秒后过期。具体自己设置即可

     value 是具体的订单号


2、使用一个脚本或者一个自定义进程轮询redis中的orderset,获取orderset有序集合中过期的订单号(一般是使用redis的 zrangebyscore 命令获取有序集合中的订单数据),然后修改数据库中的订单为已过期,同时将该订单号从有序集合中移除掉(使用redis的 zrem 命令移除有序集合中的元素)。这是使用延时(迟)队列实现订单过期的一个通用大致的基本思路,更具体的根据自身业务情况进行扩展即可。

尾声

上面有部分代码是 使用了 世界上最好的编程语言(PHP) 写的。



你是我温暖的手套,冰冷的啤酒,带着阳光味道的衬衫,(和)日复一日的梦想    ----》【恋爱的犀牛】



声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与