我正在尝试做一个简单的事情,比如在缓存中存储一些东西并在下次存在时检索它。出于某种原因,第一次一切正常,第二次调用时,缓存文件中的所有内容都被删除,并再次创建缓存。这是我的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);
有人可以指出哪里出了问题吗?
我希望每次都使用相同的存储缓存文件,并且仅在数据文件不存在时才创建新文件。
答案 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);
希望这会有所帮助,并且可以很好地存储。