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

将Infinispan缓存条目与数据库同步

端木夕
2023-03-14

我想知道是否可以使用Infinispan与Oracle数据库进行缓存数据同步。这是我的场景。我有两个主要的应用程序。一个是高度并发使用的应用程序,另一个用作管理模块。由于它是高度并发的,我希望减少数据库连接(将实体加载到缓存(读写启用)中,并在不调用数据库的情况下从此处使用它)。但同时我想根据缓存的变化更新数据库,因为管理模块直接使用数据库。那个更新过程(缓存到数据库)能在实体级处理而不涉及应用程序吗?请告诉我Infinispan是否支持此方案。如果支持,请分享想法。

共有2个答案

冀萧迟
2023-03-14

实际上,这仅适用于您在同一集群中为管理模块使用Infinispan时。如果您使用Infinispan在内存中加载A,则直接使用管理模块将A更改为数据库中的其他内容,那么Infinispan将不知道A已更新。

蓟捷
2023-03-14

是的,这是可能的。Infinispan支持此用例。

这应该只是简单的配置“问题”。您需要使用的只是正确配置CacheStore并禁用钝化。它将使您的缓存(由高度并发的应用程序使用)与数据库同步。

它到底造成了什么?

禁用钝化时,每当修改、添加或删除元素时,该修改都会通过缓存加载器持久化在后端存储中。驱逐和缓存加载之间没有直接关系。如果您不使用驱逐,持久存储中的内容基本上是内存中内容的副本。

这里的内存是指缓存。如果您想进一步了解这一点以及其他有趣的选项,请参阅:https://docs.jboss.org/author/display/ISPN/Cache装载机和存储#缓存装载机和存储缓存钝化

也许值得考虑上述驱逐。是否禁用或启用它。它主要取决于高并发应用程序生成的负载。

 类似资料:
  • 我正试图从部署在wildfly 8.0.0中的应用程序中使用infinispan(6.0)。独立配置(JDK1.7)中的最终版本,但我在注入方面有一些问题。从这篇帖子开始,在谷歌上搜索,我得到了这样的结论: 在standalone.xml 而且 最后在pom中。xml 这在我的清单上产生。MF 当我使用getCache()方法时,我java.lang.NullPointerException,因为

  • 数据库缓存类允许你把数据库查询结果保存在文本文件中以减少数据库访问。 重要 当缓存启用时,本类会被数据库驱动自动加载,切勿手动加载。 重要 并非所有查询结果都能被缓存,请仔细阅读本页内容。 启用缓存 启用缓存需要三步: 在服务器上创建一个可写的目录以便保存缓存文件; 通过文件 application/config/database.php 中的 cachedir 参数设置其目录路径; 通过将文件

  • 我在带有Infinispan 9.4.16的Wildfly 18.1上有一个独立模式群集。当两个节点上的项目版本相同时,缓存项的复制工作正常。但是,如果一个节点上有版本A,另一个节点上有版本B,那么java的复制就会失败。伊奥。InvalidClassException和组织。jboss。模块。ModuleNotFoundException:部署。我的应用程序版本B。耳朵myjar版本B。jar。

  • 我有两个应用程序使用相同的数据库实体。这两个应用程序都部署在jboss eap 6.2独立的集群上。DB表仅从一个应用程序中更新,但从两个应用程序中读取。这两个应用程序都使用本机hibernate API从数据库读取/写入数据。 在嵌入式模式下将infinispan启用为2LC后,如何确保在一个应用程序中更新的缓存实体从第二个应用程序缓存中失效?是否有任何JMX/JMS接口用于信号缓存失效? 若我

  • 我是infinispan的新手,通过实验学习。在尝试访问不同名称的远程缓存失败后,我需要一些帮助。下面是我的infinispan客户端-服务器模式未嵌入的场景。 1) 我在infinispan集群中启动了node1,并将默认远程缓存名称设置为node1\u cache--Hotrod服务器已启动 2) 已在infinispan群集中启动node2,并将默认远程缓存名称设置为node2\u cach

  • 在Infinispan 6.0中。有x版本,但wildfly 8.2的属性是什么? 谢啦