В соответствии с документами в infinispan 9.0 выселение настраивается путем добавления элемента в разделы конфигурации <* - cache />. Выселение производится кофеином с использованием алгоритма TinyLFU с дополнительным окном приема. Это было выбрано, поскольку обеспечивает высокую частоту обращений, а также требует небольшого объема памяти. Это обеспечивает лучший коэффициент попадания, чем LRU, и при этом требует меньше памяти, чем LIRS. В общем случае существует два типа:
- COUNT (Этот тип выселения удаляет записи в зависимости от их количества в кэше. Как только количество записей увеличится по сравнению с размером, запись будет быть удален, чтобы освободить место.
- ПАМЯТЬ - Этот тип выселения будет оценивать, сколько каждая запись займет в памяти, и удалит запись, когда общий размер всех записей больше, чем настроенный размер. Этот тип работает только с примитивными типами обертки, String и byte [], поэтому, если требуются пользовательские типы, вы должны включить storeAsBinary. Кроме того, исключение на основе MEMORY работает только с политикой 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 , поэтому вы не должны Ed, чтобы явно установить тип выселения. Policy = TinyLFU)
- binary-memory (Хранит записи в виде байтов [] в куче Java. Тип выселения: COUNT OR MEMORY. Policy = TinyLFU)
- off-heap-memory (Хранит записи как байты [] в собственной памяти вне Java. Тип вытеснения: COUNT ИЛИ MEMORY. Policy = LRU)