A high performance caching library for Java 8
Clone or download
ben-manes Add decay rate to simple hill climber
The simple climber is more effective than gradient descent, as we can't
find a good gradient equation. However it lacks features like momentum
and adaptive learning rates. If instead we decay the step size and
sampling rate, we get similar good behavior. Then it should converge at
an optimal value.
Latest commit 55f5078 Jan 2, 2019


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:

Powering infrastructure near you:

  • Cassandra: Manage massive amounts of data, fast
  • Infinispan: Distributed in-memory data grid
  • Akka: Build reactive applications easily
  • Ratpack: Lean & powerful HTTP apps
  • Corfu: A cluster consistency platform
  • Orbit: Virtual actors on the JVM
  • Finagle: Extensible RPC system
  • Neo4j: Graphs for Everyone

In the News

On the radar,


Download from Maven Central or depend via Gradle:

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

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

See the release notes for details of the changes.

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