Java web

数据定时超时策略

2021-06-25  本文已影响0人  小丸子的呆地

场景:
某些资源在达到某一时间点后需要将其状态置为超时
方案:

  1. 资源数据入库后,将其过期时间及主键id设置到redis,
    使用数据类型sortSet,主键id为value,过期时间为score
  2. 起定时任务,拿sortSet的第一个元素,判断其是否过期,
    如果过期,则对其主键id做过期处理,并删除在sortSet中的改元素
    再次取sortSet第一个元素,判断其是否过期。。。
    如果没有过期,则本次定时任务执行结束
  3. 轮询定时任务,定时任务的执行频率,则为过期时间的精度

优点:

  1. 不用遍历数据库
  2. 只需要判断一个元素就能确定,本次是否有需要过期的ID

缺点:

  1. 依赖redis的稳定性
  2. 数据过多,会导致这个set数据量很大
  3. 数据过期时间分布不均,会导致过期任务不平滑
  4. 定时任务执行过程中,程序执行耗时无法计算,可能会影响精度。
上一篇下一篇

猜你喜欢

热点阅读