本文章主要介绍了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,两个时间差一小时,那我设置一小时失效时间就好了。


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

presto安装注意的一些事项知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。