你好世界的例子为ehcache?

时间:2011-06-02 11:45:55

标签: ehcache

ehcache是​​一个非常可配置的野兽,示例相当复杂,通常涉及多层接口。

有没有人遇到过最简单的例子,它只是在内存中缓存类似单个数字的东西(不是分布式的,没有XML,只有尽可能少的java行)。然后将该数字缓存为60秒,然后下一个读取请求使其获得新值(例如,通过调用Random.nextInt()或类似值)

使用单例和一点同步为这样的事情编写自己的缓存是否更快/更容易?

请不要春天。

2 个答案:

答案 0 :(得分: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秒到期时间后尝试访问元素,则缓存将返回null(因此检查elt是否为空)。您可以通过创建自己的ehcache.xml文件来调整到期时间 - 在ehcache网站上,该文档的文档很不错。

答案 1 :(得分: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();
    }
}