gpt4 book ai didi

java - 如何在 spring mvc 中使用 ehcache 进行永久缓存

转载 作者:行者123 更新时间:2023-11-29 05:15:23 25 4
gpt4 key购买 nike

我想在我的 spring mvc web 应用程序中使用 ehcache。因为我的服务器每天都重置,所以我希望缓存是永久的。我将它保存在硬路径中吗?锄保存它?谢谢。

在我的 dispatcher-servlet.xml 中我添加了这个

 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache"/>
</bean>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
<property name="shared" value="true"/>
</bean>

我的ehcach.xml是

  <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="c:/tmp"/>

<defaultCache
maxElementsInMemory="500" eternal="true" overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>
<cache name="mycache"
maxElementsInMemory="0"
eternal="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU">
[1] <persistence strategy="localRestartable" synchronousWrites="false" />
</cache>

我添加此 [1] 直到缓存成为永久缓存并且在服务器重置后不会被删除。但是发生此异常元素不允许嵌套元素。我也使用 ehcach-core2.7.0.jar

    Element <cache> does not allow nested <persistence> elements.

最佳答案

您不应将遗留配置选项 - cache 元素上的 diskPersistentoverflowToDisk 属性与推荐的 persistence 混合使用元素。

但是,要获得开源磁盘持久设置,您需要坚持使用旧选项。

所以你的配置应该删除 persistence 元素成为:

<cache name="mycache"
maxElementsInMemory="0"
eternal="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU">
</cache>

但是,您还应该为 maxElementsInMemory 赋予一个有意义的值,这样您就可以拥有一组热条目,在访问它们时无需支付反序列化费用。

您还需要决定是否需要永恒元素或过期时间。为此,删除 eternal="true"timeToLiveSecondstimeToIdleSeconds 对。出于兼容性原因,两者都不是 Ehcache 中的错误,但很难知道您最初的意图。

作为最后的建议,我会将缓存内容移动到一个名称更具描述性的文件夹中,而不是 c:/tmp

请注意,开源磁盘持久层不是容错的,因此不正确地关闭 CacheCacheManager 或在执行 IO 时出现异常可能会损坏数据。如果发生这种情况,您必须先清除数据文件夹,然后才能重新启动缓存。

有关详细信息,请参阅 the Ehcache 2.7 persistence documentation .

关于java - 如何在 spring mvc 中使用 ehcache 进行永久缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com