Java 咖啡因缓存:write()永远不会被调用

Java 咖啡因缓存:write()永远不会被调用,java,caching,caffeine,Java,Caching,Caffeine,我的缓存是用编写器构建的: appsCache = Caffeine.newBuilder() .writer(this) .maximumSize(10) .expireAfterWrite(Duration.ofSeconds(64000)) .build(this); 在我的测试中,我加载10个项目,然后等待(无限循环+睡眠) 问题是,即使在调用cleanUp() 为什么没有触发write() 仅在条目更改时调用 当条目被创

我的缓存是用
编写器构建的

appsCache = Caffeine.newBuilder()
        .writer(this)
        .maximumSize(10)
        .expireAfterWrite(Duration.ofSeconds(64000))
        .build(this);
在我的测试中,我加载10个项目,然后等待(无限循环+睡眠)

问题是,即使在调用
cleanUp()

为什么没有触发
write()

仅在条目更改时调用

当条目被创建、修改或删除时,CacheWriter将收到通知。加载的映射(例如LoadingCache.get)、重新加载的映射(例如LoadingCache.refresh)或计算的映射(例如Map.computeIfPresent)不进行通信


您没有添加/删除条目。

我知道了,谢谢。因此,当第一次加载项目时,我需要自己手动将其写入DB。这是一种正确的方法吗?@yaseco read in link about write mode as write-through-cache操作是同步执行的,只有当编写器成功完成时才会更新缓存。我现在明白了,我将使用
put()
触发
write()