java-timetoliveseconds ehcache春季启动配置不起作用

下面是我的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

有一些类似的问题,但没有提供任何解决方案

解决方法:

如果您希望缓存内容在没有交互的情况下消失,那的确没有发生. Ehcache没有后台检查过期的项目,因此会迅速将其删除.

取而代之的是,每当您尝试访问过期的项目时,或者如果在写入高速缓存期间,由于高速缓存已满,就会逐出逐出,这是内联的.

上一篇:java-Spring ehcache没有这样的方法错误


下一篇:java-问题:底层Ehcache使软锁高速缓存条目到期