2011-01-10 144 views
2

我正在使用從LinkedHashMap擴展的映射來實現緩存(所以我可以實現removeEldestEntry)。舊的實現使用了一個常規哈希映射,以設定的時間間隔刷新。我想知道如何將數據保存在緩存中。我懷疑我只能在特定的時間刷新而不會搞亂LRU。在數據庫中查詢條目上的時間戳是否特別昂貴?刷新LRU緩存

+0

http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html#removeEldestEntry%28java.util.Map.Entry%29 EldestEntry是_number based_,而不是time-根據。在LRU中,你希望有一個最小生存時間 - 一個時間限制,EledestEntry限制長度 - 一個大小的限制。我想知道,你打算如何使用EldestEntry來實現LRU? – Nishant 2011-01-10 18:36:28

+0

@Nishant,我的印象是LRU簡單地管理了什麼被刪除了,而不是什麼時候。當我打到我的尺寸約束時,我想刪除最近使用最少的對象。 – 2011-01-10 18:50:42

回答

0

我結束了LinkedHashMap,按訪問時間排序,並根據db檢查時間戳。這工作像一個魅力,並大大減少了應用程序的內存負載。

1

爲什麼不使用OS Cache - 重新發明車輪沒有意義。