2012-02-16 113 views
0

我的項目處理客戶端/服務器結構,客戶端通過soap界面定期提供狀態信息。每個請求(每分鐘1次)包含統計數據的複雜結構。什麼是緩存頻繁更改狀態信息的最佳方式?

狀態信息由很多意見,而不是獲取從數據庫中每一次我把數據存儲在一個sychronized列表中的信息。

grails中有更好的緩存技術嗎?是同步列表的一個很好的解決方案?

+0

你問有沒有「更好的緩存技術」?您是否可以告訴我們您的當前解決方案是否存在特定問題?它表現不佳嗎?還是僅僅是你喜歡使用一種經過驗證的方法而不是自己動手的方式呢? – David 2012-03-19 11:15:13

+0

我的解決方案處理以下問題:使用非常複雜的對象時搜索的可能性較差(我當前的結構如下所示:map >)。我還想知道是否有更好的備選方案來同步列表,例如ehcache,用於緩存目的的內存數據庫,.. – hitty5 2012-03-19 14:15:53

回答

0

這似乎更像是一個普遍的問題,所以我會提供一些一般性的想法形成我自己的經驗。

是否有更好的Grails緩存技術?是同步列表的一個很好的解決方案?

有可能是取決於你的交易與緩存的幾層。然而,我不相信裸體的grails本身會緩存任何關於你的問題的東西;有可配置的選項和插件,可以緩存查詢,域類,服務調用,頁面片段,圖像,CSS等所有內容。更不用說你的數據庫和其他圖層可能有自己的緩存選項。

說了,我會用自己的高速緩存技術避免,除非你的處理一個非常具體的問題,你知道你可以不是像二級高速緩存一個更通用的方法(即的EHCache)有更好的表現。

如果推出自己的緩存你要是一切可能被緩存相同的內容以及察覺。緩存緩存對象形成緩存查詢是很難調試的。

如果性能是你的關心,你應該總是做一些替補你改變任何東西之前標記。 爲了真正獲得最佳性能,您需要了解它的工作原理。 Grails,hibernate和spring在性能上一起工作,這不是我可以在幾句話中提到的任何東西,但有一些插件可以幫助您瞭解JavaMelody之類的場景之外的情況。

最後,如果你已經建立一些作品和每個人的快樂不破它。:)

0

可能是一個正常範圍的服務可以幫助: http://grails.org/doc/2.0.x/guide/services.html#scopedServices

也許一個「會話」 -scoped服務可能是你正在尋找的東西。

+0

感謝您的答案,但我正在尋找更詳細的解決方案和最佳實踐的概念。目前我使用帶有同步列表的服務來存儲此信息。 – hitty5 2012-02-21 07:37:47

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作爲高速緩存管理器。

相關問題