我们使用Infinispan 9.0.3作为内存缓存。
并使用下面的putifabsent方法将对象存储在缓存中。myRemoteCache.putIfAbsent(Key,request,objectLifespan,TimeUnit.MINUTES);
但是,如果objectLifespan值大于一个月,则上面的putIfAbsent不会在缓存中存储对象。我希望在缓存中保持对象的寿命长达1年。
服务器配置包括
<expiration lifespan="-1" max-idle="-1" interval="-1" />
<locking acquire-timeout="30000" concurrency-level="200" striping="false" />
<file-store shared="false" preload="true" fetch-state="true" read-only="false" passivation="false" path="${infinispan.cache.persistence.file.path}" />
<indexing index="LOCAL" >
<!-- Enabled fastest writer: NRT backend Non-shared indexes :directory-based or near-real-time -->
<!--The drawback with near-real-time is that unflushed index changes can be lost in case of a non-clean shutdown -->
<property name="default.indexmanager">near-real-time</property>
<!-- Write indexes in Infinispan filesystem - Filesystem based index, infinispan - Distributed Cache-->
<property name="default.directory_provider">filesystem</property>
<property name="default.reader.strategy">shared</property>
<!-- This index is dedicated to the current node -->
<property name="default.exclusive_index_use">true</property>
<property name="default.chunk_size">128000</property>
<property name="default.metadata_cachename">LuceneIndexesMetadataOWR_xxx</property>
<property name="default.data_cachename">LuceneIndexesDataOWR_xxx</property>
<property name="default.indexBase">/apps/infinispanserver/infinispan-server-9.0.3.Final/bin/index</property>
<!-- The default is 10, but we don't want to waste many cycles in merging
(tune for writes at cost of reader fragmentation) -->
<property name="default.indexwriter.merge_factor">90</property>
<!-- Never create segments larger than 128 mb -->
<property name="default.indexwriter.merge_max_size">128</property>
<!-- IndexWriter flush buffer size in MB -->
<property name="default.indexwriter.ram_buffer_size">16</property>
<!-- Make sure to use native locking -->
<property name="default.locking_strategy">native</property>
<!-- Enable sharding on writers -->
<property name="default.sharding_strategy.nbr_of_shards">24</property>
<!-- No need to be backwards compatible regarding Lucene version -->
<property name="lucene_version">LUCENE_CURRENT</property>
<indexed-entities>
<indexed-entity>xxxxxxx</indexed-entity>
</indexed-entities>
</indexing>使用HotRod客户端协议与服务器进行通信,使用Protobuf数据结构。
当生命周期设置超过1个月时,您能建议为什么putIfAbsent()调用失败吗?
发布于 2020-07-17 02:28:32
在10.0之前的Infinispan版本中,寿命大于30天被解释为UNIX纪元时间(可能是因为Memcached协议做了同样的事情)。
此行为在10.0 (ISPN-10032)中被删除。
https://stackoverflow.com/questions/49001736
复制相似问题