lru

Stores key/value pairs in a lru in-memory cache. This cache is therefore reset every time the service restarts.

  • Common

  • Advanced

# Common config fields, showing default values
label: ""
lru:
  cap: 1000
  init_values: {}
# All config fields, showing default values
label: ""
lru:
  cap: 1000
  init_values: {}
  algorithm: standard
  two_queues_recent_ratio: 0.25
  two_queues_ghost_ratio: 0.5
  optimistic: false

This provides the lru package which implements a fixed-size thread safe LRU cache.

It uses the package lru

The field init_values can be used to pre-populate the memory cache with any number of key/value pairs:

cache_resources:
  - label: foocache
    lru:
      cap: 1024
      init_values:
        foo: bar

These values can be overridden during execution.

Fields

cap

The cache maximum capacity (number of entries)

Type: int

Default: 1000

init_values

A table of key/value pairs that should be present in the cache on initialization. This can be used to create static lookup tables.

Type: object

Default: {}

# Examples

init_values:
  Nickelback: "1995"
  Spice Girls: "1994"
  The Human League: "1977"

algorithm

the lru cache implementation

Type: string

Default: "standard"

Option Summary

arc

is an adaptive replacement cache. It tracks recent evictions as well as recent usage in both the frequent and recent caches. Its computational overhead is comparable to two_queues, but the memory overhead is linear with the size of the cache. ARC has been patented by IBM.

standard

is a simple LRU cache. It is based on the LRU implementation in groupcache

two_queues

tracks frequently used and recently used entries separately. This avoids a burst of accesses from taking out frequently used entries, at the cost of about 2x computational overhead and some extra bookkeeping.

two_queues_recent_ratio

is the ratio of the two_queues cache dedicated to recently added entries that have only been accessed once.

Type: float

Default: 0.25

two_queues_ghost_ratio

is the default ratio of ghost entries kept to track entries recently evicted on two_queues cache.

Type: float

Default: 0.5

optimistic

If true, we do not lock on read/write events. The lru package is thread-safe, however the ADD operation is not atomic.

Type: bool

Default: false