Class 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 Detail

      • cache

        final com.github.benmanes.caffeine.cache.AsyncCache<Object,​Object> cache
    • 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)
        Specified by:
        get in interface Cache
      • getAsync

        public <K,​V> io.smallrye.mutiny.Uni<V> getAsync​(K key,
                                                              Function<K,​io.smallrye.mutiny.Uni<V>> valueLoader)
        Specified by:
        getAsync in interface Cache
      • getIfPresent

        public <V> CompletableFuture<V> getIfPresent​(Object key)
        Description copied from interface: CaffeineCache
        Returns the future associated with key in this cache, or null if there is no cached future for key. This method is delegating to the AsyncCache.getIfPresent(Object), while recording the cache stats if they are enabled.
        Specified by:
        getIfPresent in interface CaffeineCache
        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)
      • invalidateAll

        public io.smallrye.mutiny.Uni<Void> invalidateAll()
        Specified by:
        invalidateAll in interface Cache
      • keySet

        public Set<Object> keySet()
        Description copied from interface: CaffeineCache
        Returns an unmodifiable Set 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 interface CaffeineCache
        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
        Associates value with key in this cache. If the cache previously contained a value associated with key, the old value is replaced by value. 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 interface CaffeineCache
        Parameters:
        key - key with which the specified value is to be associated
        valueFuture - 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 interface CaffeineCache
        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 interface CaffeineCache
        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 interface CaffeineCache
        Parameters:
        maximumSize - the maximum size of the cache
      • getSize

        public long getSize()