我使用ehcache在磁盘上保留数据以重启JVM。由于数据非常大,我想尝试BigMemory Go产品。 但是在他们的文档中我没有发现任何磁盘配置(最大尺寸,路径)。 使用ehcache,我的配置如下所示:
PersistentCacheManager persistentCacheManager =
newCacheManagerBuilder()
.with(persistence(new File("path_to_cache_dest"))
.withCache("myType"), newCacheConfigurationBuilder(String.class, String.class, newResourcePoolsBuilder()
.disk(2, MemoryUnit.GB, true))
.build(true);
BigMemory Go中的等价物是什么?在BigMemory中处理磁盘持久性的对象是什么?代码示例会很棒。
答案 0 :(得分:2)
BigMemory Go是基于Ehcache 2.x的商业产品。因此它与Ehcache 3.x无关,因为它使用不同的代码库和不同的API。
因此,您需要为磁盘持久性配置Ehcache 2.x,然后使用商业版本运行该配置,然后使用商业磁盘存储:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-b7e90dfd32af> in <module>()
5 file = 'dataset/business.json'
6 with open(file) as train_file:
----> 7 dict_train = json.load(train_file)
8
9 # converting json dataset from dictionary to dataframe
/Users/scotsditch/anaconda/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
289 parse_float=parse_float, parse_int=parse_int,
290 parse_constant=parse_constant, object_pairs_hook=object_pairs_hook,
--> 291 **kw)
292
293
/Users/scotsditch/anaconda/lib/python2.7/json/__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
337 parse_int is None and parse_float is None and
338 parse_constant is None and object_pairs_hook is None and not kw):
--> 339 return _default_decoder.decode(s)
340 if cls is None:
341 cls = JSONDecoder
/Users/scotsditch/anaconda/lib/python2.7/json/decoder.pyc in decode(self, s, _w)
365 end = _w(s, end).end()
366 if end != len(s):
--> 367 raise ValueError(errmsg("Extra data", s, end, len(s)))
368 return obj
369
ValueError: Extra data: line 2 column 1 - line 156640 column 1 (char 731 - 132272455)
请注意,如果您要将new CacheManager(new Configuration()
.cache(new CacheConfiguration("aCache", 10000)
.persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.LOCALRESTARTABLE))
.maxBytesLocalDisk(2, MemoryUnit.GB)
.timeToLiveSeconds(1000)
.timeToLiveSeconds(360))
.name("testDiskStoreSize")
.diskStore(new DiskStoreConfiguration().path("java.io.tmpdir/testDiskStoreSize")));
替换为Strategy.LOCALRESTARTABLE
,上述内容仍可在开源中使用。您只会失去防撞重启性并使用不同的磁盘存储模型。