当数据库中的数据更新时,Spring Boot中的缓存如何工作?

时间:2019-05-02 20:46:42

标签: spring-boot spring-cache

我必须使用旧的Oracle数据库通过Spring Boot控制器通过GET调用之一来获取数据。现在要抓住的是这个-

  1. 这是一个新的API,并且旧的旧版服务会更新数据库中的记录。这个新的API的任务是仅从数据库中获取数据。因此,此新API中没有其他更新或创建数据的方法。

  2. 此外,如果我要在数据库中实现或更改有助于我的事业的任何内容,则不能直接访问数据库。

鉴于以上这些条件,有没有一种方法可以使用Spring支持的任何缓存提供程序(例如Redis)来自动更新缓存或一旦数据库上的数据发生更改就退出缓存?

我知道我可以使用@CachePut@CacheEvict来控制我的缓存。但这仅在我具有将某些内容更新或保存到数据库的方法时适用。那么有什么解决方法可以在这种情况下实现缓存?

编辑1:添加代码 这是我的控制器

@Cacheable(value = "users", key = "#userId")
@RequestMapping(value = "/{userId}", method = RequestMethod.GET)
public User getUserDetails(@PathVariable String userId) {
  // some other code to parse userId to Long
  user = userRepository.findOne(usrId);
  // other code
  return user;
}

1 个答案:

答案 0 :(得分:0)

使用REDIS Pub-Sub并通过Redis PubSub Messaging监听另一个应用程序的更新或数据库事件,并更新或移出本地系统中的缓存

引用:https://www.baeldung.com/spring-data-redis-pub-sub