3

Wildfly 18 驱逐标签未解析,导致解析配置错误。当我将 Wildfly 11 升级到 18 时,就会出现这种情况。在 Wildfly 11(infinispan 4)中,它工作正常

    <subsystem xmlns="urn:jboss:domain:infinispan:4.0">
        <cache-container name="security" default-cache="auth-cache">
            <local-cache name="auth-cache">
                <locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
                <eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
                <expiration max-idle="-1"/>
            </local-cache>
        </cache-container>
    </subsystem>

在 Wildfly 18 中具有以下部分(不工作)

    <subsystem xmlns="urn:jboss:domain:infinispan:9.0">
        <cache-container name="security" default-cache="auth-cache">
            <local-cache name="auth-cache">
                <locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
                <eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
                <expiration max-idle="-1"/>
            </local-cache>
        </cache-container>
    </subsystem>

它给出 ^^^^ 'eviction' 在这里不是一个允许的元素。infinispan:9.4它说驱逐是通过添加配置的,但即使这样也会提供无法识别的标签内存。

如何添加驱逐策略=LRU 或替换策略:“LRU”=?

4

2 回答 2

3

根据 infinispan 9.0 中的文档,驱逐是通过将<memory/>元素添加到您的<*-cache/>配置部分来配置的。驱逐由 Caffeine 使用 TinyLFU 算法和一个额外的准入窗口来处理。选择它是因为它提供了高命中率,同时还需要低内存开销。这提供了比 LRU 更好的命中率,同时也比 LIRS 需要更少的内存。一般有两种类型:

  • COUNT (这种类型的驱逐将根据缓存中的条目数删除条目。一旦条目数增长到大于大小,则将删除条目以腾出空间。
  • MEMORY - 这种类型的驱逐将估计每个条目将在内存中占用多少,并且当所有条目的总大小大于配置的大小时将删除一个条目。此类型仅适用于原始包装器、String 和 byte[] 类型,因此如果需要自定义类型,您必须启用 storeAsBinary。此外,基于内存的驱逐仅适用于 LRU 策略。

所以我认为你这样定义它:

<cache-container name="security" default-cache="auth-cache">
    <local-cache name="auth-cache">
        <...your other options...>
        <object-memory/>
    </local-cache>
</cache-container>

或者

<binary-memory eviction-type="MEMORY/COUNT"/>

或者

off-heap-memory eviction-type="MEMORY/COUNT"/>

并且您始终可以指定大小:

size="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"

存储类型:

  • object-memory(将条目作为对象存储在 Java 堆中。这是默认存储类型。存储类型仅支持COUNT,因此您无需显式设置驱逐类型。策略=TinyLFU)
  • 二进制内存(将条目存储为 Java 堆中的字节 []。驱逐类型:计数或内存。策略= TinyLFU)
  • 堆外内存(将条目作为字节 [] 存储在 Java 之外的本机内存中。驱逐类型:计数或内存。策略=LRU)
于 2020-03-03T19:25:24.167 回答
0

隆扎克的回答是正确的。此外,您可以在 WildFly 19 中使用 WildFly 9 中的“urn:jboss:domain:infinispan:4.0”配置。WildFly 会自动将配置更新为当前模式版本中的等效配置。

于 2020-03-04T16:04:37.283 回答