如何配置BigMemory磁盘持久性?

时间:2017-10-17 07:21:04

标签: java ehcache ehcache-bigmemory

我使用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中处理磁盘持久性的对象是什么?代码示例会很棒。

1 个答案:

答案 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,上述内容仍可在开源中使用。您只会失去防撞重启性并使用不同的磁盘存储模型。