我的Java Web应用程序(tomcat)从SQL数据库获取其所有数据。但是,此数据库的大部分内容仅通过批处理工作每天更新一次。由于这些表上的查询往往比较慢,我想缓存结果。
在推出自己的解决方案之前,我想查看java的现有缓存解决方案。显然,我搜索了stackoverflow并找到了ehcache的参考和推荐。
但是通过文档查看它似乎只允许将缓存对象的生命周期设置为持续时间(例如,在添加后1小时到期),而我希望基于固定时间(例如,在凌晨0点30分到期)到期。
有没有人知道允许此类过期行为的缓存库?或者如果可能的话,如何使用ehcache执行此操作?
答案 0 :(得分:5)
EhCache允许您在创建单个缓存元素时以编程方式设置到期时间。 ehcache.xml
中配置的值只是默认值。
如果您知道该元素应该到期的特定绝对时间,那么您可以计算当时和“现在”之间的差异(即您添加到缓存的时间),并将其设置为时间到 - 直播时长,使用Element.setTimeToLive()
答案 1 :(得分:1)
您需要一个完整的缓存解决方案吗?您使用标准地图,然后安排作业在所需时间清除它们。