首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多个应用程序的Java共享缓存

跨多个应用程序的Java共享缓存
EN

Stack Overflow用户
提问于 2018-01-18 12:49:54
回答 1查看 596关注 0票数 0

我使用Spring和CacheManager,并在10个不同的应用程序中缓存来自同一个表的相同数据。实现时的假设是,我们正在缓存的数据是元数据,不应该更改。但是,它们正在更改此数据,缓存永远不会被清除。

现在的要求是清除所有10个应用程序的缓存在同一时间与两个大的要求。

  1. 每当表从mySQL工作台上的直接INSERT语句中更改时,应刷新所有应用程序缓存。我使用的是Hibernate和Spring,但请记住,插入发生在缓存数据的应用程序之外。
  2. 如果我公开一个API来刷新缓存,那么应该是1个API来刷新所有10个应用程序。目前,缓存是私有的,不在应用程序之外公开。

是否有一些缓存机制可以实现,以便所有10个应用程序都使用相同的底层缓存。因此,如果我刷新1,那么所有应用程序都将得到更新的数据。

我目前认为,并从研究中发现,在数据库中设置一个触发器来执行Java代码是个坏主意。这些要求不可能实现吗?

CacheManager:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cache/CacheManager.html

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 13:24:09

如果这10个应用程序是同一个应用程序的实例,我想您可以定义一个新的@RequestMapping("/clear-cache"),并在发生更改时调用它们。但是,如果它们是不同的应用程序,那么这将是一个混乱,除非代码是共享的。

我假设数据的新鲜度并不重要,因为您提到缓存包含元数据。因此,另一种选择是定期使用调度方法刷新所有缓存。

另一种选择是以某种方式将这个缓存集中在另一个进程(redis等)中,这样您的所有应用程序都可以从同一个缓存中获取数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48321793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档