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

时间:2012-08-29 09:28:04

标签: jpa-2.0 jboss6.x infinispan

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

2 个答案:

答案 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已更新。