我的 Spring Boot 应用程序中有一个随机问题CaffeineCache
。问题在于一个集成测试,它使下一个
- 查找用户
- 删除它
- 再次找到它
find
似乎有时缓存在删除后立即第二次调用之前没有按时刷新。
这是find
方法的简化签名
@Cacheable(cacheNames = "name", key = "{#config.id, #userId}", unless = "#result == null")
public User find(SomeConfig config, String userId) {
// ...
}
以及删除的简化签名
@Caching(put = {
@CachePut(cacheNames = "someOtherCache", key = "#userId.technicalId"),
@CachePut(cacheNames = "name", key = "{#config.id, #userId}")
})
public User delete(SomeConfig config, String userId) {
// ...
}
我想调用后delete
缓存不会立即更新,这就是find
第二次不调用方法的原因。它从 10 发生 1 次。
关于修复的任何想法?