在我們的項目中,我們必須存儲有關多個設備的當前信息。設備定期將這些信息傳輸到服務器。服務器將接收到的信息存儲在多個表中,並更新同步列表中的對象,這些列表顯示了設備的當前狀態。尋找內存中的緩存解決方案
爲避免數據庫負載過重,某些視圖通過同步列表訪問緩存的對象,以顯示所請求設備的狀態信息。
的同步列表位於服務類中,看起來像如下:
private Map<Long, DeviceStatus> statusMap = java.util.Collections.synchronizedMap(new HashMap<Long, DeviceStatus>()) // key = unique id
服務API提供的方法進行更新,刪除,...通過ID或其他屬性列表條目。
我們對當前的解決方案不滿意,因爲您無法在更多正在運行的實例之間共享狀態信息。此外,不可能監視這些列表的內存使用情況。
我們正在考慮兩種解決方案:
解決方案1:
介紹一個HSQLDB數據庫(與數據源插件的幫助下)來存儲頻繁更新的信息。有了這個解決方案,像findBY這樣的GORM功能將會保留。缺點:幾個系統之間的存儲分配。
解決方案2:
落實POJO DeviceStatus爲域類,並使其緩存。將來的兵馬俑可以用來在多個系統上共享緩存的信息。缺點:我們不需要將這些信息存儲在數據庫中。有沒有一種方法或選項可以僅將域類存儲在內存中。在啓動期間,DeviceStatus緩存通過從多個數據源(=表)獲取信息進行初始化。
要求:
- 訪問緩存的對象與像findBy方法 在幾個系統(使用了Ehcache和兵馬俑)
在這個時候我們決定採取ehcache。很抱歉,很晚的答案! – hitty5 2014-10-02 14:25:50