org.h2.util

## Class CacheLRU

- java.lang.Object
- - org.h2.util.CacheLRU

All Implemented Interfaces:
  Cache

    public class CacheLRU
    extends java.lang.Object
    implements Cache

A cache implementation based on the last recently used (LRU) algorithm.

### Method Summary

Methods
`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.
`static Cache` `getCache(CacheWriter writer, java.lang.String cacheType, int cacheSize)` Create a cache of the given type and size.
`int` `getMaxMemory()` Get the maximum memory to be used.
`int` `getMemory()` Get the used size in KB.
`void` `put(CacheObject rec)` Add an element to the cache.
`boolean` `remove(int pos)` Remove an object from the cache.
`void` `setMaxMemory(int maxKb)` Set the maximum memory to be used by this cache.
`CacheObject` `update(int pos, CacheObject rec)` Update an element in the cache.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### getCache

    public static Cache getCache(CacheWriter writer,
                 java.lang.String cacheType,
                 int cacheSize)

Create a cache of the given type and size.

Parameters:
  `writer` - the cache writer
  `cacheType` - the cache type
  `cacheSize` - the size
Returns:
  the cache object

#### clear

    public void clear()

Description copied from interface: `Cache`
Clear the cache.

Specified by:
  `clear` in interface `Cache`

#### put

    public void put(CacheObject rec)

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:
  `rec` - the object

#### update

    public CacheObject update(int pos,
                     CacheObject rec)

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
  `rec` - the element
Returns:
  the element

#### 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

#### 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

#### setMaxMemory

    public void setMaxMemory(int maxKb)

Description copied from interface: `Cache`
Set the maximum memory to be used by this cache.

Specified by:
  `setMaxMemory` in interface `Cache`
Parameters:
  `maxKb` - the maximum size in KB

#### 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