赞
踩
可以基于redis的有序集合实现延迟队列,比如某个时间给某个用户发短信,订单过期处理,等等。。。这里说一下基于延迟队列实现订单过期,只说思路,不会给出具体的实现代码
前言
需要对redis的有序集合有一个基本的认识,包括但不限于熟练掌握和使用有序集合的相关操作命令
基本思路
1、订单下单成功,则 zadd key score value
其中key是固定值, 比如说是:orderset
score 是过期的时间戳值,比如说:time() + 10 表示当前下订单的时间,10秒后过期。具体自己设置即可
value 是具体的订单号
2、使用一个脚本或者一个自定义进程轮询redis中的orderset,获取orderset有序集合中过期的订单号(一般是使用redis的 zrangebyscore 命令获取有序集合中的订单数据),然后修改数据库中的订单为已过期,同时将该订单号从有序集合中移除掉(使用redis的 zrem 命令移除有序集合中的元素)。这是使用延时(迟)队列实现订单过期的一个通用大致的基本思路,更具体的根据自身业务情况进行扩展即可。
尾声
上面有部分代码是 使用了 世界上最好的编程语言(PHP) 写的。
你是我温暖的手套,冰冷的啤酒,带着阳光味道的衬衫,(和)日复一日的梦想 ----》【恋爱的犀牛】
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。