#java #caching #guava
#java #кэширование #гуава
Вопрос:
Я создаю службу, которая постоянно получает пакеты данных и объединяет их на основе идентификатора группы пакетов. Поэтому мне нужен кэш, который может хранить похожие пакеты вместе на основе ключа и может истечь срок действия группового ключа через определенное время, чтобы освободить место для новых данных. Однако мне также нужна гарантия того, что срок действия кэша не истекает для группы до истечения срока действия. Я просмотрел кэш guava, и в нем говорится, что он может удалять ключи даже до достижения максимального размера в зависимости от уровня параллелизма и размера сегмента. Поскольку я использую несколько потоков, меня беспокоит такое поведение. Существует ли кэш / параллельная карта на основе Java, которая может удовлетворить это требование?
Комментарии:
1. Планируете ли вы использовать ограничение максимального размера? Если это так, то любому кешу будет разрешено удалить до истечения срока действия записи. Если нет, то время истечения срока действия определяет, когда сопоставление будет удалено.
2. Вы уже что-нибудь пробовали? Вы можете попробовать кофеин, похоже, он соответствует вашим требованиям (см. Эту ссылку ). Я уверен, что @BenManes сможет предоставить более подробную информацию. Другое решение, которое я вижу, — это использование Spring Reactor для хранения значений в GroupedFlux , а затем кэширование его с использованием времени истечения срока действия.
3. Если вы удаляете только на основе времени истечения срока действия, а не максимального размера, тогда Guava подойдет.