Package org.h2.util

# Class CacheLRU

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

All Implemented Interfaces:
  `Cache`

public class CacheLRU extends Object implements Cache
A cache implementation based on the last recently used (LRU) algorithm.

## Method Summary

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.
`ArrayList<CacheObject>`
`getAllChanged()`
Get all objects in the cache that have been changed.
`static Cache`
`getCache(CacheWriter writer, 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 Details

### getCache

public static Cache getCache(CacheWriter writer, 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 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