A high performance caching library for Java 8
Java Shell
Latest commit 64096c0 Feb 22, 2017 @ben-manes Restore eviction optimization
When an eviction fails due to a concurrent removal, the victim is
discarded eagerly. This may avoid an extra eviction, as otherwise
the RemovalTask is not run until the next maintenance cycle. This
was lost when fixing a bug, but is a tiny and rare optimization.

README.md

Build Status Coverage Status Maven Central JavaDoc License Stack Overflow

Caffeine is a high performance, near optimal caching library based on Java 8. 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(5, TimeUnit.MINUTES)
    .refreshAfterWrite(1, TimeUnit.MINUTES)
    .build(key -> createExpensiveGraph(key));

Features at a Glance

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

In addition, Caffeine offers the following extensions:

Use Caffeine in a community provided integration:

In the News

On the radar,

Download

Download from Maven Central or depend via Gradle:

compile 'com.github.ben-manes.caffeine:caffeine:2.4.0'

// Optional extensions
compile 'com.github.ben-manes.caffeine:guava:2.4.0'
compile 'com.github.ben-manes.caffeine:jcache:2.4.0'

See the release notes for details of the changes.

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