当前位置: 首页 > 知识库问答 >
问题:

ehcache没有将元素移至磁盘

上官高畅
2023-03-14
    CacheManager manager = CacheManager.getInstance();
    CacheConfiguration config =  new CacheConfiguration() 
    .name("mycache")
    .maxBytesLocalHeap(5,MemoryUnit.MEGABYTES)
    .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU) //least frequntly used
    .eternal(false) //should expire
    .timeToLiveSeconds(43200)//12 hours
    .timeToIdleSeconds(0)  
    .diskExpiryThreadIntervalSeconds(300)   
    .maxEntriesLocalDisk(0)//unlimited
    .persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP));
     cache = new Cache(config);
     CacheWrapperEventListener listener =  new CacheWrapperEventListener(name);
     cache.getCacheEventNotificationService().registerListener(listener); 
     manager.addCache(cache);

*notifyelementevicated[name=mycache status=STATUS_ALIVE evertion=false overflowToDisk=true maxEntriesLocalHeap=0 maxEntriesLocalDisk=0 memoryStoreEvictionPolicy=LFU timeToIdleSeconds=0 persistence=LOCALTEMPSWAP diskexperythreadintervalseconds=0 persistence=LOCALTEMPSWAP diskexperythreadintervalseconds=300 cacheeventListeners

根据我在文档中读到的内容,这个事件应该将元素假脱机到磁盘上,但是,当我之后试图从缓存中读取这个项目时,我得到的结果是null。

为了在缓存堆内存已满时使用缓存,我在配置中缺少了什么?

共有1个答案

方和宜
2023-03-14

根据对这个问题的评论提供的答案,最有可能的解释是,您正在被驱逐,因为向磁盘写入条目的队列达到了最大容量。

当这种情况发生时,没有进入队列的条目被丢弃在地板上--在put发生时被内联驱逐。快速检查是为了确保您没有将条目放在一个严格的循环中进行测试。

详见EHC-1059。

 类似资料:
  • 我只想将元素缓存在diskstore中,而不是内存/ram中,为此我使用了以下配置,它将元素存储在磁盘上,但不会在5分钟后过期/从磁盘删除数据。 我可以在ehcache配置中做什么,该配置将在指定时间后使diskstore中的元素过期?

  • 我想结合内存和磁盘缓存使用EhCache。当内存已满时,EhCache应将新元素移动到磁盘。e、 g.我在ehCache内存存储中有100个元素,并尝试放入第101个元素,如果内存已满,则将第101个单元放入磁盘,而不是第一个单元。 你能让我知道实现这一点的缓存配置吗?

  • 我使用下面的代码对缓存中的元素进行更新。 这是线程安全的还是我们需要做任何超出这一点的事情来保证线程安全。同样从性能角度来看,每次更新都会产生一个新元素。这是一个好方法吗? 问候

  • 假设我有以下XML模型: 如果我将类以下约定重命名为: 这两种元素都是: 来自的XML 看起来像这样: 但我希望它看起来像这样: 我做错什么了吗?我看到我可以使用@JsonProperty,它可以工作,但只适用于字段,我觉得在XML元素上使用JsonProperty是错误的。我的模型类可以命名为CUSTOMER、PERSON、USER吗?或者我应该重命名它们吗?如果重命名它们更好,我应该使用Jso

  • PFADD key element [element ...] 这个命令可能会对 HyperLogLog 进行修改,以便反映新的基数估算值,如果 HyperLogLog 的基数估算值在命令执行之后出现了变化, 那么命令返回 1 , 否则返回 0 。 命令的复杂度为 O(N) ,N 为被添加元素的数量。

  • 我有一个xml。我想要元素