更新缓存记录时@Cacheable 如何工作
How @Cacheable works when the cached record gets updated
我指的是 link 实现 spring 缓存。
我的场景是这样的。
@Cacheable("employees")
public List<Employee> getEmployeeDetails( int empId ){
}
所以我知道一旦数据被缓存,它就不会从数据库中获取数据。在这种情况下,如果另一个服务方法 updateEmployee(int empid) 更新记录会发生什么。我怎样才能得到更新的记录?当缓存记录更新时,@Cacheable 如何工作?
我的理解有什么问题吗?
你的理解在某种程度上是正确的。
在上面的例子中,
@Cacheable("employees")
会将员工的值放入缓存中。
如果您有一些服务方法会更新值或使对象过时,那么您需要使用 @CacheEvict 或 @CachePut.
假设您有另一种服务方法可以拯救员工。
public void saveEmployee(Employee employee){
//
}
这里你必须使用@CacheEvict 或@CachePut。
您可以在您关注的 link 中看到它们之间的区别。
您也可以在此 SO post 中找到更多信息。
我指的是 link 实现 spring 缓存。
我的场景是这样的。
@Cacheable("employees")
public List<Employee> getEmployeeDetails( int empId ){
}
所以我知道一旦数据被缓存,它就不会从数据库中获取数据。在这种情况下,如果另一个服务方法 updateEmployee(int empid) 更新记录会发生什么。我怎样才能得到更新的记录?当缓存记录更新时,@Cacheable 如何工作?
我的理解有什么问题吗?
你的理解在某种程度上是正确的。 在上面的例子中,
@Cacheable("employees")
会将员工的值放入缓存中。
如果您有一些服务方法会更新值或使对象过时,那么您需要使用 @CacheEvict 或 @CachePut.
假设您有另一种服务方法可以拯救员工。
public void saveEmployee(Employee employee){
//
}
这里你必须使用@CacheEvict 或@CachePut。
您可以在您关注的 link 中看到它们之间的区别。
您也可以在此 SO post 中找到更多信息。