Class CaffeineCacheImpl
- java.lang.Object
-
- io.quarkus.cache.runtime.AbstractCache
-
- io.quarkus.cache.runtime.caffeine.CaffeineCacheImpl
-
- All Implemented Interfaces:
Cache
,CaffeineCache
public class CaffeineCacheImpl extends AbstractCache implements CaffeineCache
This class is an internal Quarkus cache implementation using Caffeine. Do not use it explicitly from your Quarkus application. The public methods signatures may change without prior notice.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) com.github.benmanes.caffeine.cache.AsyncCache<Object,Object>
cache
-
Fields inherited from class io.quarkus.cache.runtime.AbstractCache
NULL_KEYS_NOT_SUPPORTED_MSG
-
-
Constructor Summary
Constructors Constructor Description CaffeineCacheImpl(CaffeineCacheInfo cacheInfo, boolean recordStats)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <K,V>
io.smallrye.mutiny.Uni<V>get(K key, Function<K,V> valueLoader)
<K,V>
io.smallrye.mutiny.Uni<V>getAsync(K key, Function<K,io.smallrye.mutiny.Uni<V>> valueLoader)
CaffeineCacheInfo
getCacheInfo()
<V> CompletableFuture<V>
getIfPresent(Object key)
Returns the future associated withkey
in this cache, ornull
if there is no cached future forkey
.String
getName()
long
getSize()
io.smallrye.mutiny.Uni<Void>
invalidate(Object key)
io.smallrye.mutiny.Uni<Void>
invalidateAll()
io.smallrye.mutiny.Uni<Void>
invalidateIf(Predicate<Object> predicate)
Set<Object>
keySet()
Returns an unmodifiableSet
view of the keys contained in this cache.<V> void
put(Object key, CompletableFuture<V> valueFuture)
Associatesvalue
withkey
in this cache.void
setExpireAfterAccess(Duration duration)
Changes the duration, initially set from the configuration, after which each entry should be automatically removed from the cache once that duration has elapsed after the entry's creation, the most recent replacement of its value, or its last read.void
setExpireAfterWrite(Duration duration)
Changes the duration, initially set from the configuration, after which each entry should be automatically removed from the cache once that duration has elapsed after the entry's creation, or the most recent replacement of its value.void
setMaximumSize(long maximumSize)
Changes the maximum number of entries the cache may contain.-
Methods inherited from class io.quarkus.cache.runtime.AbstractCache
as, getDefaultKey
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.quarkus.cache.Cache
as, getDefaultKey
-
-
-
-
Constructor Detail
-
CaffeineCacheImpl
public CaffeineCacheImpl(CaffeineCacheInfo cacheInfo, boolean recordStats)
-
-
Method Detail
-
get
public <K,V> io.smallrye.mutiny.Uni<V> get(K key, Function<K,V> valueLoader)
-
getAsync
public <K,V> io.smallrye.mutiny.Uni<V> getAsync(K key, Function<K,io.smallrye.mutiny.Uni<V>> valueLoader)
-
getIfPresent
public <V> CompletableFuture<V> getIfPresent(Object key)
Description copied from interface:CaffeineCache
Returns the future associated withkey
in this cache, ornull
if there is no cached future forkey
. This method is delegating to theAsyncCache.getIfPresent(Object)
, while recording the cache stats if they are enabled.- Specified by:
getIfPresent
in interfaceCaffeineCache
- Parameters:
key
- key whose associated value is to be returned- Returns:
- the future value to which the specified key is mapped, or
null
if this cache does not contain a mapping for the key - See Also:
AsyncCache.getIfPresent(Object)
-
invalidate
public io.smallrye.mutiny.Uni<Void> invalidate(Object key)
- Specified by:
invalidate
in interfaceCache
-
invalidateAll
public io.smallrye.mutiny.Uni<Void> invalidateAll()
- Specified by:
invalidateAll
in interfaceCache
-
invalidateIf
public io.smallrye.mutiny.Uni<Void> invalidateIf(Predicate<Object> predicate)
- Specified by:
invalidateIf
in interfaceCache
-
keySet
public Set<Object> keySet()
Description copied from interface:CaffeineCache
Returns an unmodifiableSet
view of the keys contained in this cache. If the cache entries are modified while an iteration over the set is in progress, the set will remain unchanged.- Specified by:
keySet
in interfaceCaffeineCache
- Returns:
- a set view of the keys contained in this cache
-
put
public <V> void put(Object key, CompletableFuture<V> valueFuture)
Description copied from interface:CaffeineCache
Associatesvalue
withkey
in 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
Cache.get(Object, Function)
when using the conventional "if cached, return; otherwise create, cache and return" pattern.- Specified by:
put
in interfaceCaffeineCache
- Parameters:
key
- key with which the specified value is to be associatedvalueFuture
- value to be associated with the specified key
-
setExpireAfterWrite
public void setExpireAfterWrite(Duration duration)
Description copied from interface:CaffeineCache
Changes the duration, initially set from the configuration, after which each entry should be automatically removed from the cache once that duration has elapsed after the entry's creation, or the most recent replacement of its value.Warning: this method must not be invoked from within an atomic scope of a cache operation.
- Specified by:
setExpireAfterWrite
in interfaceCaffeineCache
- Parameters:
duration
- the length of time after which an entry should be automatically removed
-
setExpireAfterAccess
public void setExpireAfterAccess(Duration duration)
Description copied from interface:CaffeineCache
Changes the duration, initially set from the configuration, after which each entry should be automatically removed from the cache once that duration has elapsed after the entry's creation, the most recent replacement of its value, or its last read.Warning: this method must not be invoked from within an atomic scope of a cache operation.
- Specified by:
setExpireAfterAccess
in interfaceCaffeineCache
- Parameters:
duration
- the length of time after which an entry should be automatically removed
-
setMaximumSize
public void setMaximumSize(long maximumSize)
Description copied from interface:CaffeineCache
Changes the maximum number of entries the cache may contain.Warning: this method must not be invoked from within an atomic scope of a cache operation.
- Specified by:
setMaximumSize
in interfaceCaffeineCache
- Parameters:
maximumSize
- the maximum size of the cache
-
getCacheInfo
public CaffeineCacheInfo getCacheInfo()
-
getSize
public long getSize()
-
-