CacheStoreMode的javadoc区别于我无法理解的一点:
USE
模式的javadoc:
从数据库读取时以及何时将实体数据插入/更新到缓存中 提交到数据库:这是默认行为。不强迫 从数据库读取时刷新已缓存的项目。
REFRESH
模式的javadoc在最后一句中有所不同:
强制刷新从数据库读取的项目的缓存。
当从数据库读取时更新现有缓存实体实例时,这通常涉及覆盖现有数据。那么在这种情况下强制和不强制刷新之间的区别是什么?
谢谢。
答案 0 :(得分:1)
据我所知:
CacheStoreMode.USE
,这意味着存储在共享缓存中的实体实例不可能过时了。CacheStoreMode.REFRESH
,因此存储在共享缓存中的实体实例可能会变得陈旧。 由于CacheStoreMode.USE在从数据库读取时不强制刷新已缓存的实体,因此CacheStoreMode.REFRESH会这样做。
答案 1 :(得分:0)
我认为在需要数据库的最新更新数据的地方会有所不同,它会从后端而不是通过应用程序进行更新。
在我的应用程序中,它是相同的情况(但不使用任何缓存策略),我们每次都必须加载所有数据;因为它通过来自外部系统的消息隐式修改,否则我们将处理过时的数据。
可能很少有预定作业,外部系统等直接更新数据库CacheStoreMode.REFRESH
的情况;而对于正常情况CacheStoreMode.USE
。
[除此之外我无法回忆任何其他情况,这可能会使这两种模式产生差异]
修改:文档似乎令人困惑&太短暂无法解释。此外,在本机查询的情况下,跳过批量更新等项目。没有缓存。
CacheStoreMode.USE
:只有新项目被放入缓存中,而不是已经缓存的项目。
CacheStoreMode.REFRESH
:将新项目放入缓存中已刷新的现有项目已刷新。