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.


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.


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()
    .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 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.