gpt4 book ai didi

grails - 如何在Grails中使域类缓存超时(即指定最长期限)

转载 作者:行者123 更新时间:2023-12-02 15:25:35 24 4
gpt4 key购买 nike

通常,静态的,经常访问的域类(例如国家和货币)可以从缓存中大大受益。

class country {
:
static mapping = {
cache usage: 'read-only', include: 'non-lazy'
}
}

但是,有时会在多服务器环境中添加新的国家或修改现有的国家。我们正在寻找的解决方案是缓存超时,以便在每个域类可配置的时间之后,例如10分钟后,它会在请求获取时重新读取数据。

当前,唯一的选择是如果您缓存某些内容,则必须重新启动所有服务器。我们不希望广播更改的分布式缓存的复杂性,而只是基于每个域的缓存老化选项。

grails 2.4.4是否可以实现此功能,还是我们需要实现自己的缓存层?使用MyBatis指定最大期限(又名缓存超时)很容易-希望grails具有未记录的功能。

最佳答案

重启服务器远远不是唯一的选择。
mapping块中用于缓存的配置选项非常有限,但这至少部分是因为没有标准配置API,因此您需要根据提供程序的不同来进行选择。

默认实现是Ehcache,它的配置非常简单。如果Ehcache在类路径的根目录中找到ehcache.xml文件,它将使用该文件而不是默认文件。编译过程中将src/java中的非Java文件和grails-app/conf中的非Java /非Groovy文件复制到类路径中的目录中,因此最好将文件放置在可访问的位置。

使用this heavily commented example ehcache.xml file开始。

如果要删除一个或多个缓存的实例,Hibernate会提供一个API。您可以在sessionFactory bean上调用几种“退出”方法,例如sessionFactory.evict(Book)删除所有缓存的Book实例,sessionFactory.evict(Book, 5)删除ID为5的缓存的Book,依此类推。

this SpringOne/2GX talk的幻灯片中有很多相关信息,包括配置Ehcache和使用2级缓存API。

关于grails - 如何在Grails中使域类缓存超时(即指定最长期限),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198129/

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