Class LRUCacheCheapRead<K,​V>

  • Type Parameters:
    K - The key of the cache
    V - The values in the cache

    public class LRUCacheCheapRead<K,​V>
    extends LRUCache<K,​V>
    LRU Cache implementation that relies on entries that keep last hit (get/put) timestamp in order to be able to remove least recently accessed items when running out of cache capacity. Item order is not being maintained during regular cache usage (mainly reads). This makes pruning operation expensive in exchange for making reads quite cheap in a multi-threaded environment.
    Author:
    Jakub Podlesak (jakub.podlesak at oracle.com)
    • Constructor Detail

      • LRUCacheCheapRead

        public LRUCacheCheapRead​(int maxCacheSize)
        Create new cache with given maximum capacity.
        Parameters:
        maxCacheSize - Maximum number of items to keep.
    • Method Detail

      • get

        public V get​(K key)
        Description copied from class: LRUCache
        Returns the value associated with the given key. If there is no value, returns null
        Specified by:
        get in class LRUCache<K,​V>
        Parameters:
        key - Must be a non-null key, appropriate for use as the key to a hash map
        Returns:
        The value associated with the key, or null if there is no such value
      • put

        public CacheEntry put​(K key,
                              V value)
        Description copied from class: LRUCache
        Adds the given key and value pair into the cache
        Specified by:
        put in class LRUCache<K,​V>
        Parameters:
        key - Must be a non-null key, appropriate for use as the key to a hash map
        value - Must be a non-null value
        Returns:
        A cache entry that can be used to remove this entry from the cache. Will not return null
      • releaseCache

        public void releaseCache()
        Description copied from class: LRUCache
        Clears all entries in the cache, for use when a known event makes the cache incorrect
        Specified by:
        releaseCache in class LRUCache<K,​V>
      • getMaxCacheSize

        public int getMaxCacheSize()
        Description copied from class: LRUCache
        Returns the maximum number of entries that will be stored in this cache
        Specified by:
        getMaxCacheSize in class LRUCache<K,​V>
        Returns:
        The maximum number of entries that will be stored in this cache
      • releaseMatching

        public void releaseMatching​(CacheKeyFilter<K> filter)
        Description copied from class: LRUCache
        This method will remove all cache entries for which this filter matches
        Specified by:
        releaseMatching in class LRUCache<K,​V>
        Parameters:
        filter - Entries in the cache that match this filter will be removed from the cache. If filter is null nothing will be removed from the cache