org.apache.ignite.cache.eviction.fifo

## Class FifoEvictionPolicy<K,V>

- java.lang.Object
- - org.apache.ignite.cache.eviction.AbstractEvictionPolicy<K,V>
  - - org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy<K,V>

All Implemented Interfaces:
  Externalizable, Serializable, EvictionPolicy<K,V>, IgniteMBeanAware

    public class FifoEvictionPolicy<K,V>
    extends AbstractEvictionPolicy<K,V>
    implements IgniteMBeanAware

Eviction policy based on `First In First Out (FIFO)` algorithm and supports batch eviction.

The eviction starts in the following cases:

- The cache size becomes `batchSize` elements greater than the maximum size.
- The size of cache entries in bytes becomes greater than the maximum memory size. The size of cache entry calculates as sum of key size and value size.

Note:Batch eviction is enabled only if maximum memory limit isn't set (`maxMemSize == 0`). `batchSize` elements will be evicted in this case. The default `batchSize` value is `1`.

This implementation is very efficient since it does not create any additional table-like data structures. The `FIFO` ordering information is maintained by attaching ordering metadata to cache entries.

See Also:
  Serialized Form

### Field Summary

### Fields inherited from class org.apache.ignite.cache.eviction.AbstractEvictionPolicy

`memSize`

### Constructor Summary

Constructors
Constructor and Description
`FifoEvictionPolicy()` Constructs FIFO eviction policy with all defaults.
`FifoEvictionPolicy(int max)` Constructs FIFO eviction policy with maximum size.
`FifoEvictionPolicy(int max, int batchSize)` Constructs FIFO eviction policy with maximum size and given batch size.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getCurrentSize()`
`Object` `getMBean()`
`Collection<EvictableEntry<K,V>>` `queue()` Gets read-only view on internal `FIFO` queue in proper order.
`protected boolean` `removeMeta(Object meta)`
`FifoEvictionPolicy<K,V>` `setBatchSize(int batchSize)` Sets batch size.
`FifoEvictionPolicy<K,V>` `setMaxMemorySize(long maxMemSize)` Sets maximum allowed cache size in bytes.
`FifoEvictionPolicy<K,V>` `setMaxSize(int max)` Sets maximum allowed size of cache before entry will start getting evicted.
`protected int` `shrink0()` Tries to remove one item from queue.
`String` `toString()`
`protected boolean` `touch(EvictableEntry<K,V> entry)`

### Methods inherited from class org.apache.ignite.cache.eviction.AbstractEvictionPolicy

`getBatchSize, getCurrentMemorySize, getMaxMemorySize, getMaxSize, onEntryAccessed, readExternal, shrink, writeExternal`

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

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

### Constructor Detail

#### FifoEvictionPolicy

    public FifoEvictionPolicy()

Constructs FIFO eviction policy with all defaults.

#### FifoEvictionPolicy

    public FifoEvictionPolicy(int max)

Constructs FIFO eviction policy with maximum size. Empty entries are allowed.

Parameters:
  `max` - Maximum allowed size of cache before entry will start getting evicted.

#### FifoEvictionPolicy

    public FifoEvictionPolicy(int max,
                              int batchSize)

Constructs FIFO eviction policy with maximum size and given batch size. Empty entries are allowed.

Parameters:
  `max` - Maximum allowed size of cache before entry will start getting evicted.
  `batchSize` - Batch size.

### Method Detail

#### getCurrentSize

    public int getCurrentSize()

Specified by:
  `getCurrentSize` in class `AbstractEvictionPolicy<K,V>`
Returns:
  Size of the container with trackable entries.

#### setMaxMemorySize

    public FifoEvictionPolicy<K,V> setMaxMemorySize(long maxMemSize)

Sets maximum allowed cache size in bytes.

Overrides:
  `setMaxMemorySize` in class `AbstractEvictionPolicy<K,V>`
Returns:
  `this` for chaining.

#### setMaxSize

    public FifoEvictionPolicy<K,V> setMaxSize(int max)

Sets maximum allowed size of cache before entry will start getting evicted.

Overrides:
  `setMaxSize` in class `AbstractEvictionPolicy<K,V>`
Parameters:
  `max` - Maximum allowed size of cache before entry will start getting evicted.
Returns:
  `this` for chaining.

#### setBatchSize

    public FifoEvictionPolicy<K,V> setBatchSize(int batchSize)

Sets batch size.

Overrides:
  `setBatchSize` in class `AbstractEvictionPolicy<K,V>`
Parameters:
  `batchSize` - Batch size.
Returns:
  `this` for chaining.

#### queue

    public Collection<EvictableEntry<K,V>> queue()

Gets read-only view on internal `FIFO` queue in proper order.

Returns:
  Read-only view ono internal `'FIFO'` queue.

#### removeMeta

    protected boolean removeMeta(Object meta)

Specified by:
  `removeMeta` in class `AbstractEvictionPolicy<K,V>`
Parameters:
  `meta` - Meta-information shipped to an entry.
Returns:
  `True` if meta was successfully removed from the container.

#### touch

    protected boolean touch(EvictableEntry<K,V> entry)

Specified by:
  `touch` in class `AbstractEvictionPolicy<K,V>`
Parameters:
  `entry` - Entry to touch.
Returns:
  `True` if queue has been changed by this call.

#### shrink0

    protected int shrink0()

Tries to remove one item from queue.

Specified by:
  `shrink0` in class `AbstractEvictionPolicy<K,V>`
Returns:
  number of bytes that was free. `-1` if queue is empty.

#### getMBean

    public Object getMBean()

Specified by:
  `getMBean` in interface `IgniteMBeanAware`
Returns:
  MBean for this object.

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

${current.year} Copyright © Apache Software Foundation

Follow @ApacheIgnite

Ignite Database and Caching Platform | : ver. 2.8.0
Release Date | : February 27 2020