spring-boot - 更新缓存记录时@Cacheable 的工作原理
问题描述
我指 的是实现弹簧缓存的链接。
我的情况是这样的。
@Cacheable("employees")
public List<Employee> getEmployeeDetails( int empId ){
}
所以我知道一旦数据被缓存,它就不会从数据库中获取数据。在这种情况下,如果另一个服务方法 updateEmployee(int empid) 更新记录会发生什么。如何获得更新的记录?更新缓存记录时@Cacheable 如何工作?
我的理解有什么问题吗?
解决方案
你的理解在某种程度上是正确的。在上面的例子中,
@Cacheable("employees")
会将员工的值放入缓存中。
如果您有一些服务方法会更新值或使对象陈旧,那么您需要使用@CacheEvict或@CachePut。
假设您有另一种服务方法可以节省员工。
public void saveEmployee(Employee employee){
//
}
在这里,您必须使用@CacheEvict 或@CachePut。
您可以在您关注的链接中看到它们之间的区别。
您也可以在此 SO帖子中找到更多信息。
推荐阅读
- r - pagedown::chrome_print() 与 shinyapp
- python - 将 C# 类转换为 python
- laravel - Laravel 8:npm run dev 错误未知选项'--hide-modules'
- css - 我可以从 Adobe Fonts 等服务的外部导入 CSS 自定义 @font-face 声明吗?
- javascript - Vue modal 总是重新渲染
- string - 如何修复 profanity_filter 字符串转换错误
- background - 如何复制 Squarespace 投资组合条目并保留背景图像?
- kubernetes - 带有需要作业的 initContainer 的水平 Pod 自动缩放 (HPA)
- flutter - 如何在flutter web中接收FCM推送通知数据并将用户重定向到通知中收到的链接?
- python - 当我尝试通过 windows powershell 在 docker 上运行部署 tensorflow 服务器时,收到“--mount”错误消息的“invalid argument”type=bind”