infinispan休眠2级缓存-需要XML配置格式

时间:2020-02-04 05:53:42

标签: java hibernate ehcache infinispan infinispan-8

我们当前在应用程序中使用以下配置将ehcache用作二级缓存。

<!--  Configure 2nd level cacheing for these entities -->
<cache name="cacheEntity1"
    maxElementsInMemory="1500"
    eternal="true"
    overflowToDisk="false"/>
<cache name="cacheEntity2"
    maxElementsInMemory="3500"
    eternal="true"
    overflowToDisk="false"/>

我们计划迁移到infinispan缓存。通过查看infinispan的文档,我们无法找到用于定义缓存实体的任何XML配置示例,类似于使用ehcache的示例。

我们希望在休眠实体级别配置以下属性(maxInMemory,timeToIdleSeconds和timeToLiveSeconds)。

我们更喜欢使用XML而非编程方式进行此配置。

有什么建议吗?

参考-https://infinispan.org/docs/8.2.x/user_guide/user_guide.html#_using_infinispan_as_jpa_hibernate_second_level_cache_provider

谢谢

Sadashiv

2 个答案:

答案 0 :(得分:6)

@Sada,对于Infinispan Hibernate缓存,我强烈建议您看一下我们有here的简单教程。它们涵盖了独立的,Spring和WildFly用例。我从那里开始。

另外,请参阅我们用于缓存配置的base configuration。 LIRS未被使用,并且二级缓存在本地持久化到磁盘上没有意义,这只会减慢速度或不必要地消耗额外的资源。

答案 1 :(得分:0)

我建议您配置使用逐出策略配置的缓存。

例如。 (在您的缓存容器配置中)

      <local-cache name="cacheEntity1" >
         <eviction max-entries="1500" strategy="LIRS"/>
      </local-cache>
      <local-cache name="cacheEntity2" >
         <eviction max-entries="3500" strategy="LIRS"/>
      </local-cache>

如果希望将条目溢出到磁盘,则可以将持久性存储添加到本地缓存中。

例如

      <local-cache name="cacheEntityX" >
         <eviction max-entries="3500" strategy="LIRS"/>
         <persistence passivation="false">
            <file-store path="/mydata/FileCacheStore-LocationX" />
         </persistence>
      </local-cache>

驱逐通常与高速缓存存储结合使用(驱逐时条目不会永久丢失)。逐出只会从内存中删除条目,而不会从缓存存储中删除条目。参见infinispan docs

您可以选择其他驱逐策略(NONE,UNORDERED,LRU,LIRS,MANUAL)。请记住,在Infinispan的最新版本中不建议使用某些策略。 eviction strategies

如果您要为条目添加寿命和/或最大空闲时间,请选择到期expiration

例如

 <local-cache name="cacheEntityX" >
     <eviction max-entries="3500" strategy="LIRS"/>
     <expiration lifespan="1000" max-idle="500" interval="1000" />
     <persistence passivation="true">
        <file-store path="/mydata/FileCacheStore-LocationX" />
     </persistence>
  </local-cache>

希望有帮助。