redis缓存失效形式设计思路

      用户那边提出了一个关于缓存失效设置的一个需求,要求可以设置整点失效,比如,在每天00:00:00的时候,缓存失效,场景是有些数据是t+1的。

      历史系统本来也支持缓存,但是缓存用的是相对时间:当用户获取的时候,先从缓存中取,如果取不到就从数据库取,再放进内存,使用的如下:

//只缓存一小时,一小时后redis会自动把该key删除,
redisTemplate.opsForValue().set(key, value,1, TimeUnit.HOURS);
 

     这种设计,针对t+1的数据缓存,无法达到想要效果。

     因为redis未提供设置具体时间失效的方法,一开始设计的时候考虑,把值设置进去,不设置失效时间,记录下key和需要失效的时间点,搞个定时任务,定时去扫,到了失效时间就从redis里删除。但后面发现这样太麻烦了,最后想到的方案是:在set的时候,就算出用户设置的时间和当前时间差,把失效时间设置进入就好了。比如,用户设置了天类型缓存,要求每天00:00:00缓存失效,当前时间是23:00:00,两个时间差一小时,那我设置一小时失效时间就好了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值