Interface LocalAsyncCache<K,V>
- All Superinterfaces:
AsyncCache<K,V>
- All Known Implementing Classes:
BoundedLocalCache.BoundedLocalAsyncCache, BoundedLocalCache.BoundedLocalAsyncLoadingCache, LocalAsyncLoadingCache, UnboundedLocalCache.UnboundedLocalAsyncCache, UnboundedLocalCache.UnboundedLocalAsyncLoadingCache
AsyncCache interface to minimize the
effort required to implement a LocalCache.-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classstatic final classstatic final classstatic final classA function executed asynchronously after a bulk load completes.static final class -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptioncache()Returns the backingLocalCachedata store.default CompletableFuture<Map<K, V>> composeResult(Map<K, CompletableFuture<V>> futures) Returns a future that waits for all of the dependent futures to complete and returns the combined mapping if successful.default CompletableFuture<V> Returns the future associated withkeyin this cache, obtaining that value frommappingFunctionif necessary.default CompletableFuture<V> get(K key, BiFunction<? super K, Executor, CompletableFuture<V>> mappingFunction) Returns the future associated withkeyin this cache, obtaining that value frommappingFunctionif necessary.default CompletableFuture<V> get(K key, BiFunction<? super K, Executor, CompletableFuture<V>> mappingFunction, boolean recordStats) default CompletableFuture<Map<K, V>> getAll(Iterable<? extends @NonNull K> keys, BiFunction<Iterable<? extends K>, Executor, CompletableFuture<Map<K, V>>> mappingFunction) Returns the future of a map of the values associated withkeys, creating or retrieving those values if necessary.default CompletableFuture<Map<K, V>> getAll(Iterable<? extends @NonNull K> keys, Function<Iterable<? extends K>, Map<K, V>> mappingFunction) Returns the future of a map of the values associated withkeys, creating or retrieving those values if necessary.default @Nullable CompletableFuture<V> getIfPresent(@NonNull Object key) Returns the future associated withkeyin this cache, ornullif there is no cached future forkey.default voidhandleCompletion(K key, CompletableFuture<V> valueFuture, long startTime, boolean recordMiss) policy()Returns the policy supported by this implementation and its configuration.default voidput(K key, CompletableFuture<V> valueFuture) Associatesvaluewithkeyin this cache.Methods inherited from interface AsyncCache
asMap, synchronous
-
Field Details
-
logger
-
-
Method Details
-
cache
LocalCache<K, CompletableFuture<V>> cache()Returns the backingLocalCachedata store. -
policy
-
getIfPresent
Description copied from interface:AsyncCacheReturns the future associated withkeyin this cache, ornullif there is no cached future forkey.- Specified by:
getIfPresentin interfaceAsyncCache<K,V> - Parameters:
key- key whose associated value is to be returned- Returns:
- the current (existing or computed) future value to which the specified key is mapped,
or
nullif this cache contains no mapping for the key
-
get
default CompletableFuture<V> get(@NonNull K key, @NonNull Function<? super K, ? extends V> mappingFunction) Description copied from interface:AsyncCacheReturns the future associated withkeyin this cache, obtaining that value frommappingFunctionif necessary. This method provides a simple substitute for the conventional "if cached, return; otherwise create, cache and return" pattern.If the specified key is not already associated with a value, attempts to compute its value asynchronously and enters it into this cache unless
null. The entire method invocation is performed atomically, so the function is applied at most once per key. If the asynchronous computation fails, the entry will be automatically removed from this cache.Warning: as with
CacheLoader.load(K),mappingFunctionmust not attempt to update any other mappings of this cache.- Specified by:
getin interfaceAsyncCache<K,V> - Parameters:
key- key with which the specified value is to be associatedmappingFunction- the function to asynchronously compute a value- Returns:
- the current (existing or computed) future value associated with the specified key
-
get
default CompletableFuture<V> get(K key, BiFunction<? super K, Executor, CompletableFuture<V>> mappingFunction) Description copied from interface:AsyncCacheReturns the future associated withkeyin this cache, obtaining that value frommappingFunctionif necessary. This method provides a simple substitute for the conventional "if cached, return; otherwise create, cache and return" pattern.If the specified key is not already associated with a value, attempts to compute its value asynchronously and enters it into this cache unless
null. The entire method invocation is performed atomically, so the function is applied at most once per key. If the asynchronous computation fails, the entry will be automatically removed from this cache.Warning: as with
CacheLoader.load(K),mappingFunctionmust not attempt to update any other mappings of this cache.- Specified by:
getin interfaceAsyncCache<K,V> - Parameters:
key- key with which the specified value is to be associatedmappingFunction- the function to asynchronously compute a value- Returns:
- the current (existing or computed) future value associated with the specified key
-
get
default CompletableFuture<V> get(K key, BiFunction<? super K, Executor, CompletableFuture<V>> mappingFunction, boolean recordStats) -
getAll
default CompletableFuture<Map<K,V>> getAll(Iterable<? extends @NonNull K> keys, Function<Iterable<? extends K>, Map<K, V>> mappingFunction) Description copied from interface:AsyncCacheReturns the future of a map of the values associated withkeys, creating or retrieving those values if necessary. The returned map contains entries that were already cached, combined with newly loaded entries; it will never contain null keys or values. If the any of the asynchronous computations fail, those entries will be automatically removed from this cache.A single request to the
mappingFunctionis performed for all keys which are not already present in the cache. If another call toAsyncCache.get(K, Function)tries to load the value for a key inkeys, that thread retrieves a future that is completed by this bulk computation. Any loaded values for keys that were not specifically requested will not be returned, but will be stored in the cache. Note that multiple threads can concurrently load values for distinct keys.Note that duplicate elements in
keys, as determined byObject.equals(Object), will be ignored.- Specified by:
getAllin interfaceAsyncCache<K,V> - Parameters:
keys- the keys whose associated values are to be returnedmappingFunction- the function to asynchronously compute the values- Returns:
- the future containing an unmodifiable mapping of keys to values for the specified keys in this cache
-
getAll
default CompletableFuture<Map<K,V>> getAll(Iterable<? extends @NonNull K> keys, BiFunction<Iterable<? extends K>, Executor, CompletableFuture<Map<K, V>>> mappingFunction) Description copied from interface:AsyncCacheReturns the future of a map of the values associated withkeys, creating or retrieving those values if necessary. The returned map contains entries that were already cached, combined with newly loaded entries; it will never contain null keys or values. If the any of the asynchronous computations fail, those entries will be automatically removed from this cache.A single request to the
mappingFunctionis performed for all keys which are not already present in the cache. If another call toAsyncCache.get(K, Function)tries to load the value for a key inkeys, that thread retrieves a future that is completed by this bulk computation. Any loaded values for keys that were not specifically requested will not be returned, but will be stored in the cache. Note that multiple threads can concurrently load values for distinct keys.Note that duplicate elements in
keys, as determined byObject.equals(Object), will be ignored.- Specified by:
getAllin interfaceAsyncCache<K,V> - Parameters:
keys- the keys whose associated values are to be returnedmappingFunction- the function to asynchronously compute the values- Returns:
- the future containing an unmodifiable mapping of keys to values for the specified keys in this cache
-
composeResult
Returns a future that waits for all of the dependent futures to complete and returns the combined mapping if successful. If any future fails then it is automatically removed from the cache if still present. -
put
Description copied from interface:AsyncCacheAssociatesvaluewithkeyin this cache. If the cache previously contained a value associated withkey, the old value is replaced byvalue. If the asynchronous computation fails, the entry will be automatically removed.Prefer
AsyncCache.get(Object, Function)when using the conventional "if cached, return; otherwise create, cache and return" pattern.- Specified by:
putin interfaceAsyncCache<K,V> - Parameters:
key- key with which the specified value is to be associatedvalueFuture- value to be associated with the specified key
-
handleCompletion
default void handleCompletion(K key, CompletableFuture<V> valueFuture, long startTime, boolean recordMiss)
-