我正在使用Spring框架和Java CXF服务。
有几个客户端访问固定的数据列表,这些数据从数据库中提取。由于从数据库中获取是一个昂贵的调用,数据库并没有经常更改,我认为缓存值很好。
数据库刷新 - >每天15次,无限期间
缓存刷新 - >每15分钟一次。
通过调用DB加载缓存需要15秒。
现在,如果通过调用DB来刷新缓存,则需要15秒。在这15秒内,如果客户想要访问数据,我可以在缓存中发送以前的数据。应用程序是可以容忍陈旧和过时的数据,而不是等待15秒(有一个delta函数,它在加载时间缓存后带来数据非常便宜)。在缓存以15分钟的固定间隔刷新时,ehcache是否有一种方法可以在加载新数据时在缓存中返回旧数据?
答案 0 :(得分:0)
本地磁盘上缓存的一致副本为业务需求提供了许多可能性,例如根据基于时间的需求处理不同的数据集或将数据集移动到不同的位置。它的范围从具有快速读取性能的简单键值持久性机制到在读取和写入操作期间具有内存速度的操作存储。
Ehcache有一个RestartStore,它提供快速重启和缓存持久性选项。 RestartStore实现内存缓存的磁盘镜像。重新启动后,缓存中最后一个数据将自动从磁盘加载到RestartStore,从那里数据将可用于缓存。
通过将子元素添加到缓存配置来配置磁盘上的缓存持久性。子元素包括两个属性:strategy和synchronousWrites。
<cache>
<persistence strategy=”localRestartable|localTempSwap|none|distributed” synchronousWrites=”false|true”/>
</cache>
了解更多信息Ehcache
答案 1 :(得分:0)