我使用Spring和CacheManager,并在10个不同的应用程序中缓存来自同一个表的相同数据。实现时的假设是,我们正在缓存的数据是元数据,不应该更改。但是,它们正在更改此数据,缓存永远不会被清除。
现在的要求是清除所有10个应用程序的缓存在同一时间与两个大的要求。
是否有一些缓存机制可以实现,以便所有10个应用程序都使用相同的底层缓存。因此,如果我刷新1,那么所有应用程序都将得到更新的数据。
我目前认为,并从研究中发现,在数据库中设置一个触发器来执行Java代码是个坏主意。这些要求不可能实现吗?
CacheManager:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cache/CacheManager.html
发布于 2018-01-18 13:24:09
如果这10个应用程序是同一个应用程序的实例,我想您可以定义一个新的@RequestMapping("/clear-cache"),并在发生更改时调用它们。但是,如果它们是不同的应用程序,那么这将是一个混乱,除非代码是共享的。
我假设数据的新鲜度并不重要,因为您提到缓存包含元数据。因此,另一种选择是定期使用调度方法刷新所有缓存。
另一种选择是以某种方式将这个缓存集中在另一个进程(redis等)中,这样您的所有应用程序都可以从同一个缓存中获取数据。
https://stackoverflow.com/questions/48321793
复制相似问题