最近写项目 有个需求是当客户下订单如果2分钟没有支付 订单失效。那我怎么知道这个订单在两分钟失效呢!我现在是不断跑脚本去查看有没有失效的订单。
简单点:setTimeout + events
复杂点:redis keyspace notification(键空间通知) + subscribe (对某个 key 设置失效时间,在过期时发出通知)
From PWA CNode
简单点那个 不太好 不适合大量的订单。键空间通知 对于现在redis 来说 不算太稳定 有时可能失效 接受不到通知
记录时间节点 标记状态就行 然后如果需要标记失效也可以做个批处理标记
创建订单的时候 标记一个创建时间。 后面在别的业务中用到这个订单的时候 用创建时间+有效时间 就是订单的过期时间,这时候检查一下是否过期就行了。 或者直接把订单存到redis里,给一个expire
队列
如果,在失效的时候不用通知用户。四楼正解。
在下次用户查询订单时,再计算是否过期。
访问的时候,再确定状态
疯狂打call
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
简单点:setTimeout + events
复杂点:redis keyspace notification(键空间通知) + subscribe (对某个 key 设置失效时间,在过期时发出通知)
From PWA CNode
简单点那个 不太好 不适合大量的订单。键空间通知 对于现在redis 来说 不算太稳定 有时可能失效 接受不到通知
记录时间节点 标记状态就行 然后如果需要标记失效也可以做个批处理标记
创建订单的时候 标记一个创建时间。 后面在别的业务中用到这个订单的时候 用创建时间+有效时间 就是订单的过期时间,这时候检查一下是否过期就行了。 或者直接把订单存到redis里,给一个expire
队列
如果,在失效的时候不用通知用户。四楼正解。
在下次用户查询订单时,再计算是否过期。
From PWA CNode
访问的时候,再确定状态
疯狂打call