我在Grails中使用缓存时遇到问题。缓存工作正常,因为第二次我请求一个对象时,它从缓存中获得服务。
但是,我无法让timeToLive
工作。我已将其设置为15秒,并且我希望在超过15秒后调用它时执行expensiveGetMethod()
的正文。
但是无论我在调用之间等待多长时间,对象总是从缓存中提供。
我在这里做错了什么? 为什么我的对象永远不会从缓存中逐出?
我的服务类,使用昂贵的方法:
class MyObjectService {
@Cacheable(value='myCache')
public expensiveGetMethod(String id) {
println "+++++++++++++++++ This is an expensive method call for $id"
new MyObject(id: id)
}
}
我的域名对象:
class MyObject implements Serializable {
private static final long serialVersionUID = 1
String id
String name
}
我的服务。
grails-app\conf\Config.groovy
看起来像这样:
springcache {
defaults {
overflowToDisk = false
memoryStoreEvictionPolicy = "LRU"
eternal = false
maxElementsInMemory = 10
}
caches {
myCache {
timeToLive = 15
timeToIdle = 15
}
}
}