请帮助我理解为什么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();
答案 0 :(得分:4)
“本地临时交换”持久性策略在重新启动之间不会持久存储到磁盘。关闭缓存管理器后,会丢失缓存中存储的所有内容。不幸的是,对于Ehcache的标准开源版本,您无法在重新启动之间保持不变。要启用该功能,您需要将持久性策略设置为“localRestartable”,该策略仅适用于Terracotta的Big Memory Go产品。 Big Memory Go可以免费使用,但它不是开源的。
在过去的Ehcache版本中,可以通过将缓存的overflowToDisk和diskPersistent属性设置为true来持久保存到磁盘。但是,从Ehcache 2.6开始,这些选项已被删除,转而采用上述持久性策略。
有关详细信息,请参阅有关持久性策略的their documentation。