Package org.h2.util

Class CacheTQ

  • All Implemented Interfaces:
    Cache

    public class CacheTQ
    extends java.lang.Object
    implements Cache
    An alternative cache implementation. This implementation uses two caches: a LRU cache and a FIFO cache. Entries are first kept in the FIFO cache, and if referenced again then marked in a hash set. If referenced again, they are moved to the LRU cache. Stream pages are never added to the LRU cache. It is supposed to be more or less scan resistant, and it doesn't cache large rows in the LRU cache.
    • Constructor Summary

      Constructors 
      Constructor Description
      CacheTQ​(CacheWriter writer, int maxMemoryKb)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Clear the cache.
      CacheObject find​(int pos)
      Get an element from the cache if it is available.
      CacheObject get​(int pos)
      Get an element in the cache if it is available.
      java.util.ArrayList<CacheObject> getAllChanged()
      Get all objects in the cache that have been changed.
      int getMaxMemory()
      Get the maximum memory to be used.
      int getMemory()
      Get the used size in KB.
      void put​(CacheObject r)
      Add an element to the cache.
      boolean remove​(int pos)
      Remove an object from the cache.
      void setMaxMemory​(int maxMemoryKb)
      Set the maximum memory to be used by this cache.
      CacheObject update​(int pos, CacheObject record)
      Update an element in the cache.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • lru

        private final Cache lru
      • fifo

        private final Cache fifo
      • recentlyUsed

        private final SmallLRUCache<java.lang.Integer,​java.lang.Object> recentlyUsed
      • lastUsed

        private int lastUsed
      • maxMemory

        private int maxMemory
    • Constructor Detail

      • CacheTQ

        CacheTQ​(CacheWriter writer,
                int maxMemoryKb)
    • Method Detail

      • clear

        public void clear()
        Description copied from interface: Cache
        Clear the cache.
        Specified by:
        clear in interface Cache
      • find

        public CacheObject find​(int pos)
        Description copied from interface: Cache
        Get an element from the cache if it is available. This will not move the item to the front of the list.
        Specified by:
        find in interface Cache
        Parameters:
        pos - the unique key of the element
        Returns:
        the element or null
      • get

        public CacheObject get​(int pos)
        Description copied from interface: Cache
        Get an element in the cache if it is available. This will move the item to the front of the list.
        Specified by:
        get in interface Cache
        Parameters:
        pos - the unique key of the element
        Returns:
        the element or null
      • getAllChanged

        public java.util.ArrayList<CacheObject> getAllChanged()
        Description copied from interface: Cache
        Get all objects in the cache that have been changed.
        Specified by:
        getAllChanged in interface Cache
        Returns:
        the list of objects
      • getMaxMemory

        public int getMaxMemory()
        Description copied from interface: Cache
        Get the maximum memory to be used.
        Specified by:
        getMaxMemory in interface Cache
        Returns:
        the maximum size in KB
      • getMemory

        public int getMemory()
        Description copied from interface: Cache
        Get the used size in KB.
        Specified by:
        getMemory in interface Cache
        Returns:
        the current size in KB
      • put

        public void put​(CacheObject r)
        Description copied from interface: Cache
        Add an element to the cache. Other items may fall out of the cache because of this. It is not allowed to add the same record twice.
        Specified by:
        put in interface Cache
        Parameters:
        r - the object
      • remove

        public boolean remove​(int pos)
        Description copied from interface: Cache
        Remove an object from the cache.
        Specified by:
        remove in interface Cache
        Parameters:
        pos - the unique key of the element
        Returns:
        true if the key was in the cache
      • setMaxMemory

        public void setMaxMemory​(int maxMemoryKb)
        Description copied from interface: Cache
        Set the maximum memory to be used by this cache.
        Specified by:
        setMaxMemory in interface Cache
        Parameters:
        maxMemoryKb - the maximum size in KB
      • update

        public CacheObject update​(int pos,
                                  CacheObject record)
        Description copied from interface: Cache
        Update an element in the cache. This will move the item to the front of the list.
        Specified by:
        update in interface Cache
        Parameters:
        pos - the unique key of the element
        record - the element
        Returns:
        the element