对象未存储在EhCache中

时间:2014-07-08 03:53:47

标签: java ehcache

请帮助我理解为什么D:/DataStore_ehCache中没有文件或任何内容。但是程序的执行没有异常或错误

Profit profit = new Profit();
profit.setId(1);
profit.setAmt("1000");
profit.setLastupdate(new Date());

DiskStoreConfiguration disk =new DiskStoreConfiguration();
disk.setPath("D:/DataStore_ehCache");

Configuration cacheManagerConfig = new Configuration();
cacheManagerConfig.addDiskStore(disk);

//Create a CacheManager using defaults
CacheManager manager = CacheManager.create(cacheManagerConfig);

//Create a Cache specifying its configuration.
CacheConfiguration cacheconfig = new CacheConfiguration("Profit",1000);
cacheconfig.memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)
.eternal(false)
.timeToLiveSeconds(60)
.timeToIdleSeconds(30)
.diskExpiryThreadIntervalSeconds(0)
.persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP));

Cache profitCache = new Cache(cacheconfig);
manager.addCache(profitCache);

Element element = new Element(profit.getId(), profit);
manager.getTransactionController().begin();
profitCache.put(element);
manager.getTransactionController().commit();
System.out.println("Element put in Store");
manager.shutdown();

1 个答案:

答案 0 :(得分:4)

“本地临时交换”持久性策略在重新启动之间不会持久存储到磁盘。关闭缓存管理器后,会丢失缓存中存储的所有内容。不幸的是,对于Ehcache的标准开源版本,您无法在重新启动之间保持不变。要启用该功能,您需要将持久性策略设置为“localRestartable”,该策略仅适用于Terracotta的Big Memory Go产品。 Big Memory Go可以免费使用,但它不是开源的。

在过去的Ehcache版本中,可以通过将缓存的overflowToDisk和diskPersistent属性设置为true来持久保存到磁盘。但是,从Ehcache 2.6开始,这些选项已被删除,转而采用上述持久性策略。

有关详细信息,请参阅有关持久性策略的their documentation