2013-05-13 54 views
0

如何在Java中暫時或幾分鐘緩存一個變量?臨時或暫時緩存一個變量

我需要臨時使用一個變量幾分鐘,因爲點擊數據庫總是會造成巨大的性能影響。

問題是我有一個數據庫配置值可以由用戶更改。需要在不重新啓動服務器的情況下捕獲這種更改。

所以找到一個選項來說明如何在Java中暫時或者暫時緩存一個變量。所以經過5或10分鐘的間隔後,我們可以不斷清除緩存。

+1

此類解決方案已經存在。搜索「java數據庫緩存」。讀。選擇一個合適的方法。 (如果你手動處理這個,通常*表示工作太多。) – user2246674 2013-05-13 06:01:43

+0

總是可以將結果緩存在文本文件中。 – Supericy 2013-05-13 06:06:08

+0

你可以看看弱引用(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ref/WeakReference.html),java會保留它直到下一個垃圾收集(假設沒有引用)或其中一個緩存包,如果需要更多的控制。 – 2013-05-13 06:21:35

回答

0

大部分Cache Framework都能夠配置緩存的實時時間。

如果使用EHCache例如,配置是這樣的: 注意,300是指5分鐘

<cache name="testCache1" 
eternal="false" 
timeToLiveSeconds="300" 
overflowToDisk="true" 
diskPersistent="true" 
diskExpiryThreadIntervalSeconds="300" 
maxEntriesLocalDisk="10000" 
/> 

如果用戶做出更改配置,並且能夠檢測到它的系統,你也可以使緩存無效。

CacheManager manager = CacheManager.getInstance(); 
cache = manager.getCache(cacheName); 
cache.remove(key); 

or 

cache.removeAll(); 
0

東西來自JCF。

LinkedHashMap和自定義removeEldestEntry如何?

注意只在put上調用該方法。