gpt4 book ai didi

Grails 缓存 ehcache 插件和 TTL 值

转载 作者:行者123 更新时间:2023-12-04 19:13:42 25 4
gpt4 key购买 nike

任何人都可以确认 TTL 设置,例如可以使用带有 ehcache 扩展的 grails 缓存插件设置 timeToLiveSeconds 吗?

基本插件的文档明确指出不支持 TTL,但 ehcache 扩展提到了这些值。到目前为止,我没有成功为我的缓存设置 TTL 值:

grails.cache.config = {
cache {
name 'messages'
maxElementsInMemory 1000
eternal false
timeToLiveSeconds 120
overflowToDisk false
memoryStoreEvictionPolicy 'LRU'
}
}

@Cacheable('messages')
def getMessages()

但是,消息会无限期地缓存。我可以使用 @CacheEvict 注释手动刷新缓存,但我希望在使用 ehcache 扩展时支持 TTL。

谢谢

最佳答案

是的,cache-ehcache插件绝对支持 TTL 和 EhCache 原生支持的所有缓存配置属性。如文档中所述,基本缓存插件实现了一个不支持 TTL 的简单内存缓存,但缓存 DSL 会将任何未知的配置设置传递给底层缓存提供程序。

您可以通过将以下内容添加到 Config.groovy 来配置 EhCache 设置或 CacheConfig.groovy :

grails.cache.config = {
cache {
name 'mycache'
}

//this is not a cache, it's a set of default configs to apply to other caches
defaults {
eternal false
overflowToDisk true
maxElementsInMemory 10000
maxElementsOnDisk 10000000
timeToLiveSeconds 300
timeToIdleSeconds 0
}
}

您可以在运行时验证缓存设置,如下所示:
grailsCacheManager.cacheNames.each { 
def config = grailsCacheManager.getCache(it).nativeCache.cacheConfiguration
println "timeToLiveSeconds: ${config.timeToLiveSeconds}"
println "timeToIdleSeconds: ${config.timeToIdleSeconds}"
}

EhCache javadoc for CacheConfiguration对于其他缓存属性。您还可以通过记录 grails.plugin.cache 来启用缓存的详细调试日志记录。和 net.sf.ehcache .

请注意,Grails 缓存插件实现了自己的缓存管理器,该管理器与 native EhCache 缓存管理器不同且独立。如果您直接配置了 EhCache(使用 ehcache.xml 或其他方式),那么这些缓存将与 Grails 插件管理的缓存分开运行。

注意:旧版本的Cache-EhCache插件确实存在一个bug,TTL设置没有正确设置,对象在一年后过期;这是在 Grails-Cache-Ehcache 1.1 中修复的.

关于Grails 缓存 ehcache 插件和 TTL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415029/

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