如何在Java中暫時或幾分鐘緩存一個變量?臨時或暫時緩存一個變量
我需要臨時使用一個變量幾分鐘,因爲點擊數據庫總是會造成巨大的性能影響。
問題是我有一個數據庫配置值可以由用戶更改。需要在不重新啓動服務器的情況下捕獲這種更改。
所以找到一個選項來說明如何在Java中暫時或者暫時緩存一個變量。所以經過5或10分鐘的間隔後,我們可以不斷清除緩存。
如何在Java中暫時或幾分鐘緩存一個變量?臨時或暫時緩存一個變量
我需要臨時使用一個變量幾分鐘,因爲點擊數據庫總是會造成巨大的性能影響。
問題是我有一個數據庫配置值可以由用戶更改。需要在不重新啓動服務器的情況下捕獲這種更改。
所以找到一個選項來說明如何在Java中暫時或者暫時緩存一個變量。所以經過5或10分鐘的間隔後,我們可以不斷清除緩存。
大部分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();
東西來自JCF。
LinkedHashMap
和自定義removeEldestEntry
如何?
注意只在put上調用該方法。
此類解決方案已經存在。搜索「java數據庫緩存」。讀。選擇一個合適的方法。 (如果你手動處理這個,通常*表示工作太多。) – user2246674 2013-05-13 06:01:43
總是可以將結果緩存在文本文件中。 – Supericy 2013-05-13 06:06:08
你可以看看弱引用(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ref/WeakReference.html),java會保留它直到下一個垃圾收集(假設沒有引用)或其中一個緩存包,如果需要更多的控制。 – 2013-05-13 06:21:35