首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限时间单位(putIfAbsent,value,lifespan,timeunit)

无限时间单位(putIfAbsent,value,lifespan,timeunit)
EN

Stack Overflow用户
提问于 2018-02-27 13:31:18
回答 1查看 143关注 0票数 0

我们使用Infinispan 9.0.3作为内存缓存。

并使用下面的putifabsent方法将对象存储在缓存中。myRemoteCache.putIfAbsent(Key,request,objectLifespan,TimeUnit.MINUTES);

但是,如果objectLifespan值大于一个月,则上面的putIfAbsent不会在缓存中存储对象。我希望在缓存中保持对象的寿命长达1年。

服务器配置包括

代码语言:javascript
复制
<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()调用失败吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 02:28:32

在10.0之前的Infinispan版本中,寿命大于30天被解释为UNIX纪元时间(可能是因为Memcached协议做了同样的事情)。

此行为在10.0 (ISPN-10032)中被删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49001736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档