caffeine README

The project's README from github.com/ben-manes/caffeine. As one markdown file: README.md.

Build Status Test Count Coverage Status Maven Central JavaDoc License Revved up by Develocity

Caffeine is a high performance, near optimal caching library. For more details, see our user's guide and browse the API docs for the latest release.

Cache

Caffeine provides an in-memory cache using a Google Guava inspired API. The improvements draw on our experience designing Guava's cache and ConcurrentLinkedHashMap.

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
    .maximumSize(10_000)
    .expireAfterWrite(Duration.ofMinutes(5))
    .refreshAfterWrite(Duration.ofMinutes(1))
    .build(key -> createExpensiveGraph(key));

Features at a Glance

Caffeine provides flexible construction to create a cache with a combination of the following optional features:

In addition, Caffeine offers the following extensions:

Use Caffeine in a community provided integration:

Powering infrastructure near you:

In the News

Download

Download from Maven Central or depend via Gradle:

implementation("com.github.ben-manes.caffeine:caffeine:3.2.4")

// Optional extensions
implementation("com.github.ben-manes.caffeine:guava:3.2.4")
implementation("com.github.ben-manes.caffeine:jcache:3.2.4")

For Java 11 or above, use 3.x otherwise use 2.x.

See the release notes for details of the changes.

Snapshots of the development version are available in Sonatype's snapshots repository.

caffeine (ben-manes/caffeine)

Searching Database…

17.9K ·GitHub
Что это такое?Caffeine — это высокопроизводительная библиотека для кэширования данных в памяти на Java, близкая к оптимальной по эффективности, с API, вдохновлённым Guava.
Это кэш внутри процесса или отдельный сервер кэширования, например Redis?Это исключительно кэш в памяти внутри процесса, который встраивается в ваше Java-приложение, а не отдельный сервер вроде Redis или Memcached.
Как добавить его в проект?Подключите артефакт caffeine из Maven Central или добавьте его как зависимость Gradle.
Какая версия Java нужна?Используйте линейку 3.x, если у вас Java 11 или новее; для более старых версий Java оставайтесь на 2.x.
Умеет ли Caffeine кэшировать данные на нескольких серверах?Нет, это кэш в памяти одной JVM; для распределённого кэширования его стоит использовать вместе с распределённой платформой хранения данных вроде Infinispan, что уже делают некоторые из перечисленных интеграций.
Нужно ли уже использовать Guava, чтобы извлечь из этого пользу?Нет, API Caffeine лишь вдохновлён кэшем Guava, но библиотека самостоятельна и даже включает адаптеры для Guava, чтобы работать с существующим кодом на Guava.
Какую политику вытеснения использует Caffeine?Она использует адаптивную, близкую к оптимальной политику вытеснения на основе TinyLFU (Tiny Least Frequently Used), которая описана в научных статьях, соавтором которых является создатель проекта.
Какие фреймворки поддерживают интеграцию с Caffeine?Существуют интеграции от сообщества для Spring Cache, Play Framework, Micronaut, Quarkus, Camel и JHipster, а также обёртки для Kotlin (Aedile, Kotlin Coroutines) и обёртка Scaffeine для Scala.
Кто использует Caffeine в продакшене?Она обеспечивает работу слоёв кэширования внутри Cassandra, HBase, Solr, Kafka, Infinispan, Dropwizard, Accumulo, Corfu, Neo4j, Druid и других проектов.
Может ли Caffeine собирать статистику использования кэша?Да, она может накапливать статистику обращений к кэшу, например показатели попаданий и промахов, чтобы отслеживать эффективность кэширования.
Creator
ben-manes
Size
114.9 MB
Stars
17.9K
Age
11y
Commits · 90 Days