延迟任务
延时任务,顾名思义,就是延迟一段时间后才执行的任务。
我们先看看以下业务场景:
- 当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存?
- 如何定期检查处于退款状态的订单是否已经退款成功?
- 新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?等等
实现方法
利用zset保存队列信息,按照时间戳存放,再启动一个任务,一直扫这个zset,判断当前时间和队列中的时间大小信息,执行后,删除数据;
zset常用命令
添加元素:ZADD key score member [[score member] [score member] ...]
按顺序查询元素:ZRANGE key start stop [WITHSCORES]
查询元素score:ZSCORE key member
移除元素:ZREM key member [member ...]