gpt4 book ai didi

java - Spring @Cachable 更新数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:00 26 4
gpt4 key购买 nike

示例来自:SpringSource

@Cacheable(value = "vets")
public Collection<Vet> findVets() throws DataAccessException {
return vetRepository.findAll();
}

findVets() 是如何工作的?

它第一次从 vetRepository 中获取数据并将结果保存在缓存中。但是如果在数据库中插入一个新的 vert 会发生什么——缓存是否更新(开箱即用的行为)?如果没有,我们可以将其配置为更新吗?


编辑:

但是,如果数据库是从外部源(例如,使用相同数据库的应用程序)更新的,会发生什么?

最佳答案

@CachePut("vets")    
public void save(Vet vet) {..}

你必须告诉缓存一个对象是陈旧的。如果数据在不使用您的服务方法的情况下发生变化,那么您当然会遇到问题。但是,您可以使用

清除整个缓存
@CacheEvict(value = "vets", allEntries = true)    
public void clearCache() {..}

不过这取决于缓存提供程序。如果另一个应用在没有通知您的应用的情况下更新了数据库,但它使用了相同的缓存,那么另一个应用也可能会更新缓存。

关于java - Spring @Cachable 更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com