Interface GetOptions<K, V, FC>

Options that may be passed to the LRUCache#get method.

interface GetOptions<K, V, FC> {
    allowStale?: boolean;
    noDeleteOnStaleGet?: boolean;
    status?: Status<V>;
    updateAgeOnGet?: boolean;
}

Type Parameters

  • K
  • V
  • FC

Hierarchy

  • Pick<OptionsBase<K, V, FC>, "allowStale" | "updateAgeOnGet" | "noDeleteOnStaleGet">
    • GetOptions

Properties

allowStale?: boolean

Allow LRUCache#get and LRUCache#fetch calls to return stale data, if available.

By default, if you set ttl, stale items will only be deleted from the cache when you get(key). That is, it's not preemptively pruning items, unless OptionsBase.ttlAutopurge is set.

If you set allowStale:true, it'll return the stale value as well as deleting it. If you don't set this, then it'll return undefined when you try to get a stale entry.

Note that when a stale entry is fetched, even if it is returned due to allowStale being set, it is removed from the cache immediately. You can suppress this behavior by setting OptionsBase.noDeleteOnStaleGet, either in the constructor, or in the options provided to LRUCache#get.

This may be overridden by passing an options object to cache.get(). The cache.has() method will always return false for stale items.

Only relevant if a ttl is set.

noDeleteOnStaleGet?: boolean

Do not delete stale items when they are retrieved with LRUCache#get.

Note that the get return value will still be undefined unless OptionsBase.allowStale is true.

When using time-expiring entries with ttl, by default stale items will be removed from the cache when the key is accessed with cache.get().

Setting this option will cause stale items to remain in the cache, until they are explicitly deleted with cache.delete(key), or retrieved with noDeleteOnStaleGet set to false.

This may be overridden by passing an options object to cache.get().

Only relevant if a ttl is used.

status?: Status<V>
updateAgeOnGet?: boolean

When using time-expiring entries with ttl, setting this to true will make each item's age reset to 0 whenever it is retrieved from cache with LRUCache#get, causing it to not expire. (It can still fall out of cache based on recency of use, of course.)

Has no effect if OptionsBase.ttl is not set.

This may be overridden by passing an options object to cache.get().