缓存频繁更改状态信息的最佳方法是什么?

时间:2012-02-16 07:40:08

标签: grails

我的项目处理客户端/服务器结构,其中客户端通过soap接口定期提供状态信息。每个请求(每个minuete 1个)包含一个复杂的stat us数据结构。

状态信息被许多视图使用,而不是每次从数据库中获取信息我将数据存储在同步列表中。

grails中有更好的缓存技术吗?同步列出了一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:0)

可能适当的范围服务可能会有所帮助: http://grails.org/doc/2.0.x/guide/services.html#scopedServices

也许一个“会话” - 服务可能是您正在寻找的东西。

答案 1 :(得分:0)

您可能需要查看内置缓存技术:http://grails.org/doc/2.0.x/ref/Database%20Mapping/cache.html

此处描述了更详细的方法:http://grails.org/doc/2.0.x/guide/single.html#caching

根据您要缓存的内容,您可能希望使用Caching instances(缓存该实例的所有内容)或Caching Queries(您只缓存一个查询的结果)

正如您在第二个链接中所看到的,配置允许您使用EhCache作为缓存管理器。

答案 2 :(得分:0)

这似乎更像是一个普遍的问题,所以我将根据自己的经验提供一些概括性的想法。

grails中有更好的缓存技术吗?同步列出了一个很好的解决方案吗?

根据您的处理方式,可能会有多层缓存。我不相信裸露的grails本身会缓解与你的问题有关的任何事情;有可配置的选项和插件,允许您缓存查询,域类,服务调用,页面片段,图像,CSS和其他所有内容。更不用说您的数据库和其他图层可能有自己的缓存选项。

说过我会避免使用你自己的缓存技术,除非你处理一个非常具体的问题,你知道你可以比更通用的方法(如二级缓存)(即EHCache)更好地执行。

如果您确实推出了自己的缓存,则您希望了解其他可能缓存相同内容的内容。从高速缓存的查询中缓存缓存的对象是一个很难调试的问题。

如果你担心表现,你应该在改变任何东西之前做一些基准测试。 要真正获得最佳性能,你需要了解它是如何工作的。 Grails,hibernate和spring在性能上一起工作,这不是我可以用几句话放的东西但是有插件可以帮助您了解JavaMelody之外的场景。

最后,如果你已经建立了一些有效的东西,每个人都很高兴不要打破它。 :)