node写的订单
发布于 7 年前 作者 yanghanyu198 4452 次浏览 来自 问答

最近写项目 有个需求是当客户下订单如果2分钟没有支付 订单失效。那我怎么知道这个订单在两分钟失效呢!我现在是不断跑脚本去查看有没有失效的订单。

8 回复

简单点:setTimeout + events

复杂点:redis keyspace notification(键空间通知) + subscribe (对某个 key 设置失效时间,在过期时发出通知)

From PWA CNode

简单点那个 不太好 不适合大量的订单。键空间通知 对于现在redis 来说 不算太稳定 有时可能失效 接受不到通知

记录时间节点 标记状态就行 然后如果需要标记失效也可以做个批处理标记

创建订单的时候 标记一个创建时间。 后面在别的业务中用到这个订单的时候 用创建时间+有效时间 就是订单的过期时间,这时候检查一下是否过期就行了。 或者直接把订单存到redis里,给一个expire

如果,在失效的时候不用通知用户。四楼正解。

在下次用户查询订单时,再计算是否过期。

From PWA CNode

访问的时候,再确定状态

回到顶部