0

我们目前在我们的应用程序中使用 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

谢谢,

萨达希夫

4

2 回答 2

6

@Sada,对于 Infinispan Hibernate 缓存,我强烈建议您查看我们在此处提供的简单教程。它们涵盖独立、Spring 和 WildFly 用例。我会从那里开始。

此外,请参阅我们用于缓存配置的基本配置。LIRS 没有被使用,并且将二级缓存持久化到本地磁盘没有任何意义,它只会减慢速度或不必要地消耗额外的资源。

于 2020-02-07T16:19:26.890 回答
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 文档

您可以选择不同的驱逐策略(NONE、UNORDERED、LRU、LIRS、MANUAL)。请记住,某些策略在最后的 Infinispan 版本中已弃用。驱逐策略

如果您想为条目附加生命周期和/或最大空闲时间,您可以选择到期。到期

例如。

 <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>

希望能帮助到你。

于 2020-02-07T15:27:30.567 回答