当前位置: 首页 > 知识库问答 >
问题:

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

仰钧
2023-03-14

我将Spring缓存与CacheManager结合使用,并可在10个不同的应用程序中缓存同一表中的相同数据。实现时的假设是,我们缓存的数据是元数据,不应更改。然而,他们正在更改这些数据,缓存永远不会被清除。

现在的要求是通过2个大请求同时清除所有10个应用程序的缓存。

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

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

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

缓存管理器:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cache/CacheManager.html

共有1个答案

鲁浩渺
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 我正在忙于建立一个包含3个不同子域的平台-example.com,auth.example.com和api.example.com。它们与在服务器的不同端口上运行的3个单独的NodeJS应用程序一起运行。 这是设置会话的代码: 这三个应用程序的配置完全相同,并且它们都位于同一台服务器上。由于某些原因,会话未共享。我似乎记得几周前就已经共享了它们,现在一切都坏了- 我偷偷地怀疑,当我们将

  • 我正在使用FB。允许用户使用此代码共享我的页面的ui: 当从 Android 移动应用程序中的嵌入式浏览器共享页面时,用户可以选择要用于打开共享对话框的应用程序。如果选择了脸书应用,则不会有回调响应。在普通的桌面浏览器中,一切都按预期工作。这种行为是预期的吗?

  • null 这是我第一次尝试将Firebase集成到我的一个项目中,因此一些关于实现这项任务的指导将是非常有用的。 谢了!

  • 我创建了一个可运行的类a,它为我执行一些任务。我使用ExecutorService提交这个类,以便并行执行这些任务。 可运行类A调用另一个对象B,该对象发送一个AsyncFuture请求(future.get()one)。 我将可运行类A的单独对象提交给ExecutorService,但是,类B的对象由bean(单例)引用。这会导致线程执行出现问题吗? 我注意到类A的一些对象没有被任何线程执行。

  • 我有一个多线程应用程序,它有一个生产者线程和几个消费者线程。数据存储在一个共享的线程安全集合中,当缓冲区中有足够的数据时,就刷新到数据库中。 来自爪哇文档 - 一个队列,它还支持在检索元素时等待队列变为非空,并在存储元素时等待队列中的空间变为可用。 检索并删除此队列的头部,如有必要,请等待元素可用。 我的问题是- < li >是否有另一个集合具有E[] take(int n)方法?即阻塞队列等待,

  • 问题内容: 我正在尝试编写一个多线程Python应用程序,其中在线程之间共享一个SQlite连接。我无法使它正常工作。真正的应用程序是一个小巧的Web服务器,但是以下简单代码演示了我的问题。 为了成功运行下面的示例代码,我需要进行哪些更改? 当我在THREAD_COUNT设置为1的情况下运行此程序时,它可以正常工作,并且数据库已按预期进行更新(即,字母“ X”被添加到SectorGroup列的文本