Ehcache将数据存储在物理存储中而不是内存存储中 - grails 2.x.

时间:2014-04-21 06:15:50

标签: grails gorm ehcache

我已经浏览了这个博客,以便在grails中使用二级缓存

link

&安培;我做了以下更改

in resources.groovy

      userCache(
    org.springframework.cache.ehcache.EhCacheFactoryBean) {
  }

内部服务类

    def userCache

public def userCachedList(){
    if (userCache.get("userList")) {
        ...
    }
    else {
        ...

        userCache.put(
                new net.sf.ehcache.Element("userList",
                list)
                )
    }
...
}

缓存工作正常,但此缓存列表的问题存储在物理位置。当我启动应用程序时,我看到.ehcache-diskstore.lock是在tmp目录中创建的。

我的设置是

hibernate {
    cache.use_second_level_cache = false
    cache.use_query_cache = false
    //cache.use_structured_entities = false
    cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
    hibernate.format_sql=false
    hibernate.connection.release_mode='after_transaction'
}

ehcache.xml是

<ehcache name="myapp">

<!-- Necessary for spring-security-acl plugin-->
<!--<diskStore path="java.io.tmpdir"/>-->

<defaultCache
    maxElementsInMemory="20000"
    eternal="false"
    timeToIdleSeconds="3600"
    timeToLiveSeconds="3600"
    overflowToDisk="false">
    <!-- <cacheEventListenerFactory
        class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> -->
 </defaultCache>

 <cache 
    name="owsoo.User"
    maxEntriesLocalHeap="50"
    eternal="false"
    timeToLiveSeconds="600"
    overflowToDisk="false">
    <!-- <cacheEventListenerFactory 
        class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> -->
 </cache>

<cache name="aclCache"
       maxElementsInMemory="100000"
       eternal="true"
       overflowToDisk="false"
       memoryStoreEvictionPolicy="LRU"
       statistics="true"
        />

我需要更改设置以使用内存缓存而不是物理磁盘存储?

1 个答案:

答案 0 :(得分:0)

似乎ehcache.xml中提供的默认值不适用于resources.groovy中提到的bean,所以我在这里添加了属性来解决这个问题

userCache(org.springframework.cache.ehcache.EhCacheFactoryBean) { bean ->
           maxElementsInMemory="1000"
           eternal="true"
           overflowToDisk="false"
           memoryStoreEvictionPolicy="LRU"
    }