2011-06-02 35 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

相关问题