Class ConcurrentLruCache<K,V>

java.lang.Object
org.springframework.util.ConcurrentLruCache<K,V>
Type Parameters:
K - the type of the key used for cache retrieval
V - the type of the cached values

public class ConcurrentLruCache<K,V> extends Object
Simple LRU (Least Recently Used) cache, bounded by a specified cache limit.

This implementation is backed by a ConcurrentHashMap for storing the cached values and a ConcurrentLinkedDeque for ordering the keys and choosing the least recently used key when the cache is at full capacity.

Since:
5.3
Author:
Brian Clozel, Juergen Hoeller
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    ConcurrentLruCache(int sizeLimit, Function<K,V> generator)
    Create a new cache instance with the given limit and generator function.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Immediately remove all entries from this cache.
    boolean
    contains(K key)
    Determine whether the given key is present in this cache.
    get(K key)
    Retrieve an entry from the cache, potentially triggering generation of the value.
    boolean
    remove(K key)
    Immediately remove the given key and any associated value.
    int
    Return the current size of the cache.
    int
    Return the maximum number of entries in the cache (0 indicates no caching, always generating a new value).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ConcurrentLruCache

      public ConcurrentLruCache(int sizeLimit, Function<K,V> generator)
      Create a new cache instance with the given limit and generator function.
      Parameters:
      sizeLimit - the maximum number of entries in the cache (0 indicates no caching, always generating a new value)
      generator - a function to generate a new value for a given key
  • Method Details

    • get

      public V get(K key)
      Retrieve an entry from the cache, potentially triggering generation of the value.
      Parameters:
      key - the key to retrieve the entry for
      Returns:
      the cached or newly generated value
    • contains

      public boolean contains(K key)
      Determine whether the given key is present in this cache.
      Parameters:
      key - the key to check for
      Returns:
      true if the key is present, false if there was no matching key
    • remove

      public boolean remove(K key)
      Immediately remove the given key and any associated value.
      Parameters:
      key - the key to evict the entry for
      Returns:
      true if the key was present before, false if there was no matching key
    • clear

      public void clear()
      Immediately remove all entries from this cache.
    • size

      public int size()
      Return the current size of the cache.
      See Also:
    • sizeLimit

      public int sizeLimit()
      Return the maximum number of entries in the cache (0 indicates no caching, always generating a new value).
      See Also: