首页 > 解决方案 > 更新缓存记录时@Cacheable 的工作原理

问题描述

我指 的是实现弹簧缓存的链接。

我的情况是这样的。

@Cacheable("employees")
public List<Employee> getEmployeeDetails( int empId ){
    
}

所以我知道一旦数据被缓存,它就不会从数据库中获取数据。在这种情况下,如果另一个服务方法 updateEmployee(int empid) 更新记录会发生什么。如何获得更新的记录?更新缓存记录时@Cacheable 如何工作?

我的理解有什么问题吗?

标签: spring-bootjava-8spring-cache

解决方案


你的理解在某种程度上是正确的。在上面的例子中,

@Cacheable("employees")

会将员工的值放入缓存中。

如果您有一些服务方法会更新值或使对象陈旧,那么您需要使用@CacheEvict@CachePut

假设您有另一种服务方法可以节省员工。

public void saveEmployee(Employee employee){
//
}

在这里,您必须使用@CacheEvict 或@CachePut。

您可以在您关注的链接中看到它们之间的区别。

您也可以在此 SO帖子中找到更多信息。


推荐阅读