1

下面是ehcache的配置,

假设我们使用的是 ehcache 版本 3.7

<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
        xmlns='http://www.ehcache.org/v3'
        xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.7.xsd
                            http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.7.xsd">


    <service>
        <jsr107:defaults enable-management="true" enable-statistics="true"/>

    </service>

    <cache alias="MyCache">
        <expiry>
            <ttl unit="seconds" >172800</ttl>
        </expiry>
        <heap unit="entries">1000</heap>

    </cache>




</config>
  1. 问题是:如何切换到 TickingTimeSource,如 ehcache 文档中所述

到目前为止完成的作业:-

  • 试图在 ehcache xsd 文件中搜索 TickingTimeSource 的配置标签 --> 到目前为止没有任何线索。
  • 在 ehcache 3 代码库中搜索 TickingTimeSource 切换以获取 github 中的示例代码 --> 到目前为止没有任何线索。
  • 只是试图在新的 ehcache 3 上使用配置来压缩性能。发现 ehcache 3 不支持 LRU 驱逐策略。有 AgainstEvictionAdvisor (防止驱逐的逻辑,我猜这对性能没有帮助)
  • 在 ehcache 谷歌组中检查了类似查询的答案 -> 到目前为止没有答案
  • 检查来自 github 的示例 ehcache 配置 gists 文件 -> 目前未找到 TickingTimeSource 的相关配置。
  • 是否在使用 ehcache 的地方进行了 java 代码调试并检查内部变量/对象并搜索设置 TimeSource - 这可能会提供注入 TickingTimeSource 的线索。发现 TimeSource 需要在内部 Store 对象( JSR107Store 或 ehcacheStore )中设置,但它没有提供直接设置时间源的api。
4

1 回答 1

0

我发现只有一种方法可以通过基于 Java 的配置来实现这一点。我没有时间对此进行测试,但这段代码与我在 ehcache 测试中发现的类似:

CacheManager cacheManager =
    CacheManagerBuilder.newCacheManagerBuilder()
            .using(new TimeSourceConfiguration(new TickingTimeSource(1L, 1000L)))
            .withCache("cache1",
                    CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, Object.class, ResourcePoolsBuilder.heap(10))).build(true)
于 2020-02-25T12:14:10.950 回答