我想知道是否可以使用Infinispan进行与Oracle数据库的缓存数据同步。这是我的情景。我有两个主要的应用程序。一个是高度并发使用应用程序,第二个用作管理模块。由于它是高度并发的,我想减少数据库连接(将实体加载到缓存中(读写启用)并在不调用数据库的情况下从这个地方使用它)。但同时我想根据缓存更改来更新数据库,因为管理模块直接使用数据库。可以在不涉及应用程序的情况下更新进程(缓存到数据库)处理实体级别吗?请让我知道Infinispan是否支持这种情况。如果支持请分享想法。
答案 0 :(得分:1)
是的,有可能。 Infinispan支持这个用例。
这应该只是简单的配置“问题”。您需要使用的只是使用passivation disabled
正确配置的CacheStore。它将使您的缓存(由高度并发的应用程序使用)与数据库保持同步。
它到底是什么原因?
禁用钝化时,无论何时修改元素,都会添加 或者删除,然后该修改将保留在后端存储中 通过缓存加载器。驱逐之间没有直接关系 和缓存加载。如果你不使用驱逐,持久性中有什么 商店基本上是内存中的内容的副本。
内存是指缓存。 如果您想了解更多有关此内容和其他有趣选项的信息,请参阅:https://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores#CacheLoadersandStores-cachepassivation
也许考虑上述驱逐是值得的。是否禁用或启用它。它主要取决于高度并发的应用程序生成的负载。
答案 1 :(得分:0)
实际上,这仅适用于在管理模块的同一群集中使用Infinispan时。如果您使用Infinispan在内存中加载A,请使用admin模块将A直接更改为数据库中的其他内容,然后Infinispan将不知道A已更新。