ehcache是一个巨大的可配置的野兽,并且这些例子相当复杂,通常涉及多层接口。hello世界ehcache的例子?
有没有人遇到过最简单的例子,它只是在内存中缓存像单个数字一样的东西(不是分布式的,没有XML,只有尽可能少的java行)。然后下一个读取请求会导致它获得一个新的值(例如通过调用Random.nextInt()或类似的方法)
这是更快/更容易编写我们自己的缓存的东西像这样一个单身人士和一点同步?
没有春天请。
ehcache是一个巨大的可配置的野兽,并且这些例子相当复杂,通常涉及多层接口。hello世界ehcache的例子?
有没有人遇到过最简单的例子,它只是在内存中缓存像单个数字一样的东西(不是分布式的,没有XML,只有尽可能少的java行)。然后下一个读取请求会导致它获得一个新的值(例如通过调用Random.nextInt()或类似的方法)
这是更快/更容易编写我们自己的缓存的东西像这样一个单身人士和一点同步?
没有春天请。
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网站上的文档体面。
的工作实施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();
}
}
使用EHCache需要知道的大部分方法的甜和短的教程! – Tastybrownies 2014-05-26 02:03:29
非常好,谢谢! 但是,这并没有给任何超过单身人士的(now-updatedat)>超时检查。理想情况下,缓存应该在旧的结果关闭时返回并得到一个新的结果,以避免所有读取线程被阻塞几秒钟。 ehcache可以做到这一点,还是应该坚持使用单例和同步? 非常感谢! – wingnut 2011-06-08 15:26:42
据我所知,EhCache没有内置最后更新的时间检查功能。您可以在更新时擦除缓存条目,也可以在从缓存中抓取之前进行自己的检查。 EhCache将有一个插入对象的时间戳,这样就完成了。当缓存填满时,它还会处理移除不常使用的对象。最后,如果您愿意,它可以让您在将来做更多的事情。但是,是的,有时写你自己更简单。 – jbrookover 2011-06-09 13:36:57
感谢您的宝贵回答 – Jamsheer 2014-08-26 06:39:01