caffeine 3.1.1 releases, A high performance caching library for Java
Caffeine is a high-performance Java 8 based caching library providing a near optimal hit rate.
A Cache is similar to ConcurrentMap, but not quite the same. The most fundamental difference is that a ConcurrentMap persists all elements that are added to it until they are explicitly removed. A Cache
on the other hand is generally configured to evict entries automatically, in order to constrain its memory footprint. In some cases a LoadingCache
or AsyncLoadingCache
can be useful even if it doesn’t evict entries, due to its automatic cache loading.
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.
Features at a Glance
Caffeine provides flexible construction to create a cache with a combination of the following features:
- automatic loading of entries into the cache, optionally asynchronously
- size-based eviction when a maximum is exceeded based on frequency and recency
- time-based expiration of entries, measured since last access or last write
- asynchronously refresh when the first stale request for an entry occurs
- keys automatically wrapped in weak references
- values automatically wrapped in weak or soft references
- notification of evicted (or otherwise removed) entries
- writes propagated to an external resource
- accumulation of cache access statistics
Caffeine 3.1.1 has been released.
Changelog
- Fixed
refreshAfterWrite
when racing with a removed entry (#715) - Fixed gradle module metadata variant selection (#716)