背景

积分过期是一个常见需求,常见的如先进先出模型,另外需要允许客户端传入过期时间

设计

要求

  • 允许外部定义积分规则(相对时间和绝对时间)
  • 允许外部传入过期时间,如没有传入则默认采用规则计算
  • 过期积分不允许使用
  • 年末海量过期考虑性能

实现

过期积分实现

积分赠送时,通过外部传参或者计算得到积分过期时间,写入积分赚取明细。积分扣减时,默认按照过期时间、ID排序进行扣减。

过期规则

关联商家账号,两种过期类型,默认永久。

防止过期积分被使用

用户扣减前执行过期,相当于活跃用户实时保障积分过期。

定时过期

每天凌晨1点定时任务,按照表扫描过期积分并执行。

海量过期

针对表开启多线程过期,大概可以达到2000每秒的过期效率。

假设存在两亿条数据需要过期,大概需要一天。

总结

惰性+活跃用户实时的处理方式,类似redis的缓存过期。