- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Spring Boot 1.5.12.RELEASE
,并使用咖啡因 2.6.2
作为缓存提供程序。
我的一项服务中有一个方法:
@Cacheable(cacheNames = [CacheService.MY_CACHE_NAME], sync = true)
fun fetchThing(id: Int, at: OffsetDateTime?): Thing? {
LOGGER.debug("################### $id $at #############")
// some network operation
LOGGER.debug("################### $id $at IS DONE #############")
return thing
}
我希望只看到第一个日志一次,但如果我在第一次调用解析之前再次调用 fetchThing
,则该值会计算两次:
09:18:34.657 [XNIO-2 task-11] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null #############
09:18:34.673 [XNIO-2 task-12] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null #############
09:18:36.025 [XNIO-2 task-11] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null IS DONE #############
09:18:36.030 [XNIO-2 task-12] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null IS DONE #############
如果我再次调用此函数,我不会看到任何日志,因此缓存正在工作。
所以看来 sync
不起作用。我错过了什么吗?
编辑:主类注解:
@SpringBootApplication(exclude = [ElastiCacheAutoConfiguration::class])
@EnableSwagger2
@EnableScheduling
@EnableCaching
@EnableTransactionManagement
class Application
最佳答案
这很荒谬,但是...尝试更改缓存名称。
我刚刚遇到了同样的问题,并且不知道我的配置出了什么问题。所以我改变了缓存的名称 - 它神奇地工作了。太傻了...
关于java - Spring Boot 同步缓存与咖啡因不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037154/
Caffeine 有 expiresAfterWrite 方法,可以查看上次写入时间。我希望它只查看创建时间。因此,当第一个条目到来时,条目将在固定的时间后过期,而无需查看该条目的更新次数。这可能吗?
我有一个计算密集型的一次性离线处理任务,需要几个小时才能运行,我正在使用 Caffeine作为我的内存缓存。设置最大缓存大小的好的启发式方法是什么?我正在使用 8GB 的 RAM 运行我的 Jav
我想配置Caffeine缓存以在加载程序无法刷新缓存时返回陈旧的结果。以下Kotlin代码演示了这种情况: @Test fun `completeble future`() = run
我们使用caffeine来替换当前springboot中默认的ConcurrentHashMap缓存。我们使用 @Cacheable(cacheNames = { "..."}) 注释动态创建缓存。
我无法运行 caffeinate 命令 caffeinate The program 'caffeinate' is currently not installed. You can install
从 Java 8 开始,我们可以在 ConcurrentHashMap 上使用 .compute* 方法来按 key 同步处理,这样如果两个线程同时对同一个 key 执行 .compute* 方法,回
我是一名优秀的程序员,十分优秀!