Ehcache没有在文件中存储任何内容

时间:2011-09-07 19:26:31

标签: ehcache

我正在尝试做一个简单的事情,比如在缓存中存储一​​些东西并在下次存在时检索它。出于某种原因,第一次一切正常,第二次调用时,缓存文件中的所有内容都被删除,并再次创建缓存。这是我的ehcache配置文件

<ehcache>
  <diskStore path="<TEMP_DIR_PATH>" />
  <defaultCache maxElementsInMemory="10000" eternal="true"
      timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
      maxElementsOnDisk="10000000" diskPersistent="true"
      diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" />
   <cache name="mycache" maxElementsInMemory="1" eternal="true"
       overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600"
       diskPersistent="true" diskExpiryThreadIntervalSeconds="1"
       memoryStoreEvictionPolicy="LFU"/>
</ehcache>

代码实际上创建了两个名为mycache.index的文件,另一个名为mycache.data。将值放入缓存的代码如下所示。

Cache cache = cacheManager.getCache("mycache");
Element myElement= new Element("KEY1","This will be stored in cache");
cache.put(myElement);

有人可以指出哪里出了问题吗?

我希望每次都使用相同的存储缓存文件,并且仅在数据文件不存在时才创建新文件。

2 个答案:

答案 0 :(得分:0)

您需要调用cache.flush()cache.dispose()将待处理数据转储到磁盘。

答案 1 :(得分:0)

CacheManager.getInstance().addCache("test");
        CacheManager.getInstance().getCache("test").put(new Element("name", "abhi"));
        CacheManager.getInstance().getCache("test").put(new Element("class", "ten"));
        CacheManager.getInstance().getCache("test").put(new Element("age", "24"));

        Element elt = CacheManager.getInstance().getCache("test").get("class");
        //return (elt == null ? null : elt.getObjectValue());
        System.out.println(elt);

希望这会有所帮助,并且可以很好地存储。