赞
踩
在项目中可能会遇到这样的业务场景,下单后,并没有支付,隔多久后,如果用户还没支付,就自动取消订单,针对这种延时支付的场景,有很多实现方法,可以用MQ来实现,但是如果针对一个小项目,要引入MQ,有时候会觉得成本有点大,那可以用redis来实现,redis实现延时队列也有多种方案,比如可以使用发布订阅模式来实现,也可以直接用zSet集合来实现,本博客通过zSet集合来实现延时队列,仅供参考
要实现延时队列,可以使用redis zSet的一些命令,比如生产者生成消息,就加入队列里,先简单用定时任务,通过当前的时间戳获取所有的消息,到期的消息自动消费
# key为队列的名称,score为当前的时间戳加上延迟时间,value为消息体
zadd key score value
# key为队列的名称,min为0,max为当前的时间戳
zrangebyscore key min max
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。