2014-07-11 122 views
0

我已經構建了一個控制器接口,它封裝了對來自數據庫的某些對象的訪問。爲了減少數據庫負載,我想將這些對象緩存在列表中。含義:當某人在某個時間範圍內訪問控制器中同一對象的請求時,應該從緩存/列表中獲取該請求。按年齡收集autoCleanup

這個列表應該會自動刪除一段時間內沒有請求的對象(假設:30秒)。

有沒有準備好實施這樣的清單?

乾杯, 基督教

+1

我認爲你可以緩存機制類似的Ehcache,Memcached的實現這個沒有年齡的處理。您可以將密鑰和集合設置爲具有該密鑰到期時間的值。對於每個請求,您都可以重置到期時間。如果您想在列表中使用過期時間,請考慮使用redis。 – shazin

+0

謝謝,ehChache是​​一個很好的暗示。從來沒有聽說過它,但很容易整合。 –

回答

0

我只能實現一個circular buffer。這是很容易實現,並且需要

另一種選擇是使用具有高速緩存功能的O/R映射像Hibernate

+0

這是一個Web應用程序,如果負載變高,則可以填充循環緩衝區索引(int具有最大限制)。該選項不可擴展。 – shazin

+0

int max值爲2 147 483 647.對象的最大舊值爲30秒。所以如果循環緩衝區已滿並且所有對象都是jung,我們都會遇到問題。這意味着服務器在30秒內獲得了2 147 483 647個不同的請求。數據庫應該包含2 147 483 647個唯一項目。不錯。 – dit