Spring 在磁盘上维护持久性拷贝时进行ECache刷新
我正在使用Spring框架和JavaCXF服务 我的项目要求每隔15分钟从数据库刷新一次缓存。从数据库中提取数据平均需要一分钟。所以,当这一分钟的操作缓存从db刷新时,如果我尝试访问缓存,它应该返回以前存储的值 时间线是-> 0分钟:应用程序启动。缓存刷新的触发器 0.5分钟:正在通过查询数据库加载缓存 1分钟:缓存已加载,例如:xyz 5分钟:已访问缓存并返回xyz 15分钟:缓存应刷新新缓存值将在16分钟时为xyw 15.5分钟:正在通过查询数据库加载缓存。此时,如果访问缓存,它应该返回以前的缓存值,因为新缓存现在处于不一致状态。应该返回xyz 16分钟:缓存已重新加载。如果现在访问,则应返回xyq 我有两个问题: 现在我有一个spring任务调度器,每15分钟刷新一次缓存。我能处理ehcache本身吗? 我的ehcache.xml看起来像: 如何实现此缓存在15.5分钟内的行为? 答复: Ehcache有一个使用Quartz调度器的定时刷新装饰器。有关如何使用它,请参见此。 除非使刷新过程具有事务性,否则Ehcache不会提供此行为。否则,您将在获取键时命中映射到该键的任何值。Spring 在磁盘上维护持久性拷贝时进行ECache刷新,spring,caching,refresh,persistence,ehcache,Spring,Caching,Refresh,Persistence,Ehcache,我正在使用Spring框架和JavaCXF服务 我的项目要求每隔15分钟从数据库刷新一次缓存。从数据库中提取数据平均需要一分钟。所以,当这一分钟的操作缓存从db刷新时,如果我尝试访问缓存,它应该返回以前存储的值 时间线是-> 0分钟:应用程序启动。缓存刷新的触发器 0.5分钟:正在通过查询数据库加载缓存 1分钟:缓存已加载,例如:xyz 5分钟:已访问缓存并返回xyz 15分钟:缓存应刷新新缓存值将在16分钟时为xyw 15.5分钟:正在通过查询数据库加载缓存。此时,如果访问缓存,它应该返回以前
<ehcache>
<cache name="mycache"
maxElementsInMemory="3000"
eternal="false"
timeToIdleSeconds="60000"
timeToLiveSeconds="60000"
overflowToDisk="true"
diskPersistent="false" />
<persistence strategy="localTempSwap" synchronousWrites="true" />
</cache>
</ehcache>