ehcache是一个非常可配置的野兽,示例相当复杂,通常涉及多层接口.
有没有人遇到过最简单的例子,它只是在内存中缓存类似单个数字的东西(不是分布式的,没有XML,只有尽可能少的java行).然后将该数字缓存60秒,然后下一个读取请求使其获得新值(例如,通过调用Random.nextInt()或类似)
使用单例和一些同步来编写我们自己的缓存是否更快/更容易?
请不要春天.
jbr*_*ver 38
EhCache带有故障安全配置,具有一些合理的到期时间(120秒).这足以让它运行起来.
进口:
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
Run Code Online (Sandbox Code Playgroud)
然后,创建缓存非常简单:
CacheManager.getInstance().addCache("test");
Run Code Online (Sandbox Code Playgroud)
这会创建一个名为的缓存test
.您可以拥有许多不同的独立缓存,所有缓存都由同一个管理CacheManager
.将对添加(key, value)
到此缓存非常简单:
CacheManager.getInstance().getCache("test").put(new Element(key, value));
Run Code Online (Sandbox Code Playgroud)
检索给定键的值非常简单:
Element elt = CacheManager.getInstance().getCache("test").get(key);
return (elt == null ? null : elt.getObjectValue());
Run Code Online (Sandbox Code Playgroud)
如果在默认的120秒到期时间之后尝试访问元素,则缓存将返回null(因此检查是否elt
为null).您可以通过创建自己的ehcache.xml
文件来调整有效期- 在ehcache网站上,该文档的文档是正确的.
ali*_*ind 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();
}
}
Run Code Online (Sandbox Code Playgroud)