-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Removal
Terminology:
- eviction means removal due to the policy
- invalidation means manual removal by the caller
- removal occurs as a consequence of invalidation or eviction
At any time, you may explicitly invalidate cache entries rather than waiting for entries to be evicted.
// individual key
cache.invalidate(key)
// bulk keys
cache.invalidateAll(keys)
// all keys
cache.invalidateAll()
Cache<Key, Graph> graphs = Caffeine.newBuilder()
.evictionListener((Key key, Graph graph, RemovalCause cause) ->
System.out.printf("Key %s was evicted (%s)%n", key, cause))
.removalListener((Key key, Graph graph, RemovalCause cause) ->
System.out.printf("Key %s was removed (%s)%n", key, cause))
.build();
You may specify a removal listener for your cache to perform some operation when an entry is removed, via Caffeine.removalListener(RemovalListener)
. These operations are executed asynchronously using an Executor, where the default executor is ForkJoinPool.commonPool() and can be overridden via Caffeine.executor(Executor)
.
When the operation must be performed synchronously with eviction, use Caffeine.evictionListener(RemovalListener)
instead. This listener will only be notified when RemovalCause.wasEvicted()
is true. For an explicit removal, Cache.asMap()
offers compute methods that are performed atomically.
Note that any exceptions thrown by the RemovalListener
are logged (using System.Logger) and swallowed.