我在 grails 中遇到二级缓存问题。以下是我正在遵循的配置
数据源.groovy
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'org.hibernate.cache.EhCacheProvider'
}
FirmClient.groovy
static mapping = {
cache true
}
FirmClientController.groovy
def t1 = System.currentTimeMillis()
def firmClient = FirmClient?.findAll(query,[cache:true])
println "time take for Firm client list>>>>>> ${System.currentTimeMillis()-t1}"
conf/ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache name="default" maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>
<cache name="FirmClient" maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>
</ehcache>
第一个问题在 tmpdir 中,FirmClient.data 没有任何数据。如何将数据转储到 FirmClient.data
第二个问题是,当我第一次点击查询时,以毫秒为单位的时间比使用相同参数的第二次点击要多,它会逐渐减少。但是如果查询被缓存,我认为它应该将时间段显示为零。
谁能帮助我二级缓存的工作原理以及如何解决上述问题?