2011-06-02 68 views
34

ehcache是​​一個巨大的可配置的野獸,並且這些例子相當複雜,通常涉及多層接口。hello世界ehcache的例子?

有沒有人遇到過最簡單的例子,它只是在內存中緩存像單個數字一樣的東西(不是分佈式的,沒有XML,只有儘可能少的java行)。然後下一個讀取請求會導致它獲得一個新的值(例如通過調用Random.nextInt()或類似的方法)

這是更快/更容易編寫我們自己的緩存的東西像這樣一個單身人士和一點同步?

沒有春天請。

回答

38

EhCache帶有一個具有合理到期時間(120秒)的故障安全配置。這足以啓動並運行。

進口:

import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 

然後,建立一個緩存是非常簡單的:

CacheManager.getInstance().addCache("test"); 

這將創建一個名爲test緩存。您可以擁有許多不同的獨立緩存,它們都由相同的CacheManager管理。添加(key, value)對這個緩存是簡單:

CacheManager.getInstance().getCache("test").put(new Element(key, value)); 

檢索給定關鍵字的值是一樣簡單:

Element elt = CacheManager.getInstance().getCache("test").get(key); 
return (elt == null ? null : elt.getObjectValue()); 

如果嘗試默認120秒期滿後訪問的元素期間,緩存將返回空值(因此檢查elt是否爲空)。您可以通過創建自己的ehcache.xml文件來調整到期期限 - 在ehcache網站上的文檔體面。

+0

非常好,謝謝! 但是,這並沒有給任何超過單身人士的(now-updatedat)>超時檢查。理想情況下,緩存應該在舊的結果關閉時返回並得到一個新的結果,以避免所有讀取線程被阻塞幾秒鐘。 ehcache可以做到這一點,還是應該堅持使用單例和同步? 非常感謝! – wingnut 2011-06-08 15:26:42

+0

據我所知,EhCache沒有內置最後更新的時間檢查功能。您可以在更新時擦除緩存條目,也可以在從緩存中抓取之前進行自己的檢查。 EhCache將有一個插入對象的時間戳,這樣就完成了。當緩存填滿時,它還會處理移除不常使用的對象。最後,如果您願意,它可以讓您在將來做更多的事情。但是,是的,有時寫你自己更簡單。 – jbrookover 2011-06-09 13:36:57

+0

感謝您的寶貴回答 – Jamsheer 2014-08-26 06:39:01

13

的工作實施jbrookover的回答:

import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
import net.sf.ehcache.Cache; 

public class EHCacheDemo { 
    public static final void main(String[] igno_red) { 
     CacheManager cchm = CacheManager.getInstance(); 

     //Create a cache 
     cchm.addCache("test"); 

     //Add key-value pairs 
     Cache cch = cchm.getCache("test"); 
     cch.put(new Element("tarzan", "Jane")); 
     cch.put(new Element("kermit", "Piggy")); 

     //Retrieve a value for a given key 
     Element elt = cch.get("tarzan"); 
     String sPartner = (elt == null ? null : elt.getObjectValue().toString()); 

     System.out.println(sPartner); //Outputs "Jane" 

     //Required or the application will hang 
     cchm.removeAllCaches(); //alternatively: cchm.shutdown(); 
    } 
} 
+1

使用EHCache需要知道的大部分方法的甜和短的教程! – Tastybrownies 2014-05-26 02:03:29

相關問題