我必须使用旧的Oracle数据库通过Spring Boot控制器通过GET调用之一来获取数据。现在要抓住的是这个-
这是一个新的API,并且旧的旧版服务会更新数据库中的记录。这个新的API的任务是仅从数据库中获取数据。因此,此新API中没有其他更新或创建数据的方法。
此外,如果我要在数据库中实现或更改有助于我的事业的任何内容,则不能直接访问数据库。
鉴于以上这些条件,有没有一种方法可以使用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;
}
答案 0 :(得分:0)
使用REDIS Pub-Sub并通过Redis PubSub Messaging监听另一个应用程序的更新或数据库事件,并更新或移出本地系统中的缓存