为了账号安全,请及时绑定邮箱和手机立即绑定

timetoliveseconds ehcache spring boot 配置不起作用

timetoliveseconds ehcache spring boot 配置不起作用

喵喵时光机 2021-08-19 17:32:50
下面是我的 ehcache 配置文件<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:noNamespaceSchemaLocation="ehcache.xsd"    updateCheck="true"    monitoring="autodetect"    dynamicConfig="true">    <diskStore path="java.io.tmpdir" />    <cache name="trans"        maxEntriesLocalHeap="10000"        maxEntriesLocalDisk="1000"        eternal="false"        diskSpoolBufferSizeMB="20"        timeToIdleSeconds="0"        timeToLiveSeconds="6"        memoryStoreEvictionPolicy="LFU"        transactionalMode="off">        <persistence strategy="localTempSwap" />    </cache>    </ehcache>所有 Spring 注释和配置都正常工作@Component@CacheConfig(cacheNames = {"trans" })public class MyTransService {    private List<Trans> list;    @Autowired    private EhCacheCacheManager manage;    @PostConstruct    public void setup() {        list = new ArrayList<>();    }    @CachePut    public void addTransaction(Trans trans) {        this.list.add(trans);    }    @CacheEvict(allEntries = true)    public void deleteAll() {        this.list.clear();    }    }但是在timetoliveseconds之后缓存没有得到清除。有人可以帮助我我的配置有什么问题吗?下面的页面说这是错误,但不知道如何解决这个问题?我使用的是 spring-boot-starter-cache-2.0.3 版本https://github.com/ehcache/ehcache-jcache/issues/26有一些类似的问题,但没有提供任何解决方案
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果您希望缓存内容在没有交互的情况下消失,那确实不会发生。Ehcache 没有对过期项目的背景检查,可以急切地删除它们。

而是内联删除过期项目,无论何时您尝试访问它们,或者如果在写入缓存期间,由于缓存已满,驱逐开始。


查看完整回答
反对 回复 2021-08-19
?
喵喔喔

TA贡献1735条经验 获得超5个赞

能够使用 ehcache-JSR-107 包装器解决此问题。下面是java配置


@Component

public class CachingSetup implements JCacheManagerCustomizer {


     @Override

     public void customize(CacheManager cacheManager)

     {

       cacheManager.createCache("trans", new MutableConfiguration<>()

         .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(SECONDS, 10)))

         .setStoreByValue(false)

         .setStatisticsEnabled(true));

     }

}

绒球


<dependencies>

        <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-cache</artifactId> <!--Starter for using Spring Framework's caching support-->

        </dependency>           

        <dependency>

          <groupId>javax.cache</groupId> <!-- JSR-107 API-->

          <artifactId>cache-api</artifactId>

        </dependency>

        <dependency>

          <groupId>org.ehcache</groupId>

          <artifactId>ehcache</artifactId>

          <version>3.0.0</version>

        </dependency>

    </dependencies>


查看完整回答
反对 回复 2021-08-19
  • 2 回答
  • 0 关注
  • 376 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信