redis延时队列

redis延时队列

基本原理

利用redis的Sorted Set有序集合数据结构实现

  • 订单创建时,订单id和当前时间戳作为Sorted Set 的value和score
  • 定时通过zrangebyscore返回指定score区间内的订单进行处理
  • 通过zrem保证只有一个消费者能从Sorted Set中删除元素,删除成功消费者就可以执行任务了【

    取消未付款订单/确认收货实现

加入队列

  • 启动系统时,扫描未付款/已发货未收货的订单,将订单id和创建/发货时间加入队列
  • 创建订单/发货时,添加当前订单的id和时间进入队列

移除队列

  • 用户在设定时间范围内完成付款/收货,从队列中移除任务
  • 到达设定时间,消费者删除任务然后执行任务(取消订单/确认收货)
0%