Java 当缓存刷新时,ehCache能否返回旧的缓存值
我正在使用Spring框架和JavaCXF服务 有几个客户端访问从数据库获取的固定数据列表。由于从数据库获取数据是一个昂贵的调用,而且数据库不会频繁更改,所以我认为缓存值是一件好事 数据库刷新->每天15次,间隔不定 缓存刷新->每15分钟一次 通过调用DB加载缓存需要15秒 现在,如果通过调用DB刷新缓存,则需要15秒。在这15秒内,如果客户端想要访问数据,我可以发送缓存中以前的数据。应用是可以容忍陈旧和过时的数据,而不是等待15秒(有一个delta函数,它在加载缓存后带来数据,这非常便宜)。ehcache中是否有一种方法可以在加载新数据的同时返回缓存中的旧数据,同时以15分钟的固定间隔刷新缓存? 本地磁盘上缓存的一致副本为业务需求提供了许多可能性,例如根据基于时间的需要使用不同的数据集,或者将数据集移动到不同的位置。它可以是具有快速读取性能的简单键值持久化机制,也可以是在读写操作期间具有内存速度的操作存储 Ehcache有一个RestartStore,它提供了快速可重启性和缓存持久性选项。RestartStore实现内存缓存的磁盘镜像。重新启动后,缓存中最后一个数据将自动从磁盘加载到RestartStore,从那里数据将可用于缓存 通过将子元素添加到缓存配置中来配置磁盘上的缓存持久性。子元素包括两个属性:strategy和synchronousWritesJava 当缓存刷新时,ehCache能否返回旧的缓存值,java,spring,caching,ehcache,Java,Spring,Caching,Ehcache,我正在使用Spring框架和JavaCXF服务 有几个客户端访问从数据库获取的固定数据列表。由于从数据库获取数据是一个昂贵的调用,而且数据库不会频繁更改,所以我认为缓存值是一件好事 数据库刷新->每天15次,间隔不定 缓存刷新->每15分钟一次 通过调用DB加载缓存需要15秒 现在,如果通过调用DB刷新缓存,则需要15秒。在这15秒内,如果客户端想要访问数据,我可以发送缓存中以前的数据。应用是可以容忍陈旧和过时的数据,而不是等待15秒(有一个delta函数,它在加载缓存后带来数据,这非常便宜)。
<cache>
<persistence strategy=”localRestartable|localTempSwap|none|distributed” synchronousWrites=”false|true”/>
</cache>
有关更多信息- 如果使用“cache-aside”模式,并且应用程序代码负责重新加载缓存数据,则在缓存过期之前,只要缓存保持映射,您就会完全观察到所需的行为
- 如果使用带有缓存加载程序的“cache-through”模式,则无法获得这样的行为,即当重新加载映射时,它将锁定密钥,从而阻止试图同时访问它的其他线程