我们当前在应用程序中使用以下配置将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而非编程方式进行此配置。
有什么建议吗?
谢谢
Sadashiv
答案 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>
希望有帮助。