[英]What is the difference between CacheStoreMode USE and REFRESH
CacheStoreMode的javadoc区别于我无法真正掌握的一点:
USE
模式的javadoc:
从数据库读取时以及在将数据提交到数据库时,将实体数据插入/更新到缓存中:这是默认行为。 从数据库读取时不强制刷新已缓存的项目。
REFRESH
模式的javadoc在最后一句中有所不同:
强制刷新从数据库读取的项目的缓存。
当从数据库读取时更新现有的高速缓存实体实例时,这通常涉及覆盖现有数据。 那么在这种情况下强制和不强制刷新之间的区别是什么?
谢谢。
我所知道的:
CacheStoreMode.USE
这意味着存储在共享缓存中的实体实例不可能是陈旧的。 CacheStoreMode.REFRESH
,因此存储在共享缓存中的实体实例可能会变得陈旧。 由于CacheStoreMode.USE在从数据库读取时不强制刷新已缓存的实体,因此CacheStoreMode.REFRESH会这样做。
我认为在需要数据库的最新更新数据的地方会有所不同,它会从后端而不是通过应用程序进行更新。
在我的应用程序中,它是相同的情况(但不使用任何缓存策略),我们必须每次加载所有数据; 因为它通过来自外部系统的消息隐式修改,否则我们将处理过时的数据。
可能很少有预定作业,外部系统等直接更新数据库的情况, CacheStoreMode.REFRESH
是合适的; 而对于正常情况CacheStoreMode.USE
。
[除此之外我不能回忆任何其他情况,这可能会使这两种模式有所不同]
编辑:文档似乎令人困惑,太短,无法正确解释。 此外,在本机查询的情况下,批量更新等项目将被跳过并且不会被缓存。
CacheStoreMode.USE
:只将新项放入缓存中,而不是已缓存的项。 CacheStoreMode.REFRESH
:将新项目放入缓存中,并刷新已存在的缓存项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.