3 回答
TA贡献1772条经验 获得超8个赞
我会自行回答我的问题,因为没有人愿意提供任何帮助。
我在处理此问题时遇到的问题是对缓存使用情况的误解。我在此问题上发布的需求与如何更新缓存列表的成员有关(方法响应)。缓存无法解决此问题,因为缓存的值是列表本身,因此我们无法部分更新缓存的值。
我想解决此问题的方式与“地图”或分布式地图有关,但我想使用@Cacheable注释。通过使用分布式地图,无需使用即可实现我在问题中提出的要求@Cacheable。因此,返回的列表可能已经更新。
因此,我不得不(希望)@Cacheable从另一个角度来解决这个问题。每当需要更新的缓存时,我都会使用此代码对其进行刷新。
我使用下面的代码来解决我的问题:
@Cacheable("users")
List<User> list() {
return userRepository.findAll()
}
// Refresh cache any time the cache is modified
@CacheEvict(value = "users", allEntries = true")
void create(User user) {
userRepository.create(user)
}
@CacheEvict(value = "users", allEntries = true")
void update(User user) {
userRepository.update(user)
}
@CacheEvict(value = "users", allEntries = true")
void delete(User user) {
userRepository.delete(user)
}
另外,我为spring缓存启用了日志记录输出,以确保/了解缓存的工作方式:
# Log Spring Cache output
logging.level.org.springframework.cache=TRACE
添加回答
举报