tiny-lru
Tiny LRU cache for Client or Server
Last updated 2 years ago by avoidwork .
BSD-3-Clause · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install tiny-lru 
SYNC missed versions from official npm registry.

Tiny LRU

Least Recently Used cache for Client or Server.

Using the factory

import {lru} from "tiny-lru";
const cache = lru(max, ttl = 0, resetTtl = false);

Using the Class

import {LRU} from "tiny-lru";
const cache = new LRU(max, ttl = 0, resetTtl = false);
import {LRU} from "tiny-lru";
class MyCache extends LRU {}

Interoperability

Lodash provides a memoize function with a cache that can be swapped out as long as it implements the right interface. See the lodash docs for more on memoize.

Example

_.memoize.Cache = lru().constructor;
const memoized = _.memoize(myFunc);
memoized.cache.max = 10;

Testing

Tiny-LRU has 100% code coverage with its tests.

--------------|---------|----------|---------|---------|-------------------
File          | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------|---------|----------|---------|---------|-------------------
All files     |     100 |    91.54 |     100 |     100 |
 tiny-lru.cjs |     100 |    91.54 |     100 |     100 | 11-31,150,184
--------------|---------|----------|---------|---------|-------------------

API

Properties

first

Item in "first" or "bottom" position; default is null

Example

const cache = lru();

cache.first; // null - it's a new cache!

last

Item in "last" or "top" position; default is null

Example

const cache = lru();

cache.last; // null - it's a new cache!

max

Max items to hold in cache; default is 1000

Example

const cache = lru(500);

cache.max; // 500

resetTtl

Resets item.expiry with each set() if true; default is false

Example

const cache = lru(500, 5*6e4, true);

cache.resetTtl; // true

size

Number of items in cache

Example

const cache = lru();

cache.size; // 0 - it's a new cache!

ttl

Milliseconds an item will remain in cache; lazy expiration upon next get() of an item

Example

const cache = lru(100, 3e4);

cache.ttl; // 30000;

Methods

clear

Clears the contents of the cache

return {Object} LRU instance

Example

cache.clear();

delete

Removes item from cache

param  {String} key Item key
return {Object}     LRU instance

Example

cache.delete("myKey");

entries(["key1", "key2"])

Returns an Array cache items

param  {Array} keys (Optional) Cache item keys to get, defaults to `this.keys()` if not provided
return {Object} LRU instance

Example

cache.entries(['myKey1', 'myKey2']);

evict

Evicts the least recently used item from cache

return {Object} LRU instance

Example

cache.evict();

expiresAt

Gets expiration time for cached item

param  {String} key Item key
return {Mixed}      Undefined or number (epoch time)

Example

const item = cache.expiresAt("myKey");

get

Gets cached item and moves it to the front

param  {String} key Item key
return {Mixed}      Undefined or Item value

Example

const item = cache.get("myKey");

has

Returns a Boolean indicating if key is in cache

return {Object} LRU instance

Example

cache.has('myKey');

keys

Returns an Array of cache item keys (first to last)

return {Array} Array of keys

Example

console.log(cache.keys());

set

Sets item in cache as first

param  {String} key   Item key
param  {Mixed}  value Item value
return {Object}       LRU instance

Example

cache.set("myKey", {prop: true});

values(["key1", "key2"])

Returns an Array cache items

param  {Array} keys (Optional) Cache item keys to get
return {Array} Cache items

Example

cache.values(['abc', 'def']);

License

Copyright (c) 2024 Jason Mulligan Licensed under the BSD-3 license.

Current Tags

  • 11.2.11                                ...           latest (2 years ago)

102 Versions

  • 11.2.11                                ...           2 years ago
  • 11.2.10                                ...           2 years ago
  • 11.2.9                                ...           2 years ago
  • 11.2.8                                ...           2 years ago
  • 11.2.7                                ...           2 years ago
  • 11.2.6                                ...           2 years ago
  • 11.2.5                                ...           2 years ago
  • 11.2.4                                ...           2 years ago
  • 11.2.3                                ...           3 years ago
  • 11.2.2                                ...           3 years ago
  • 11.2.1                                ...           3 years ago
  • 11.2.0                                ...           3 years ago
  • 11.1.2                                ...           3 years ago
  • 11.1.1                                ...           3 years ago
  • 11.1.0                                ...           3 years ago
  • 11.0.1                                ...           3 years ago
  • 11.0.0                                ...           3 years ago
  • 10.4.1                                ...           3 years ago
  • 10.4.0                                ...           3 years ago
  • 10.3.0                                ...           3 years ago
  • 10.2.2                                ...           3 years ago
  • 10.2.1                                ...           3 years ago
  • 10.2.0                                ...           3 years ago
  • 10.1.1                                ...           3 years ago
  • 10.1.0                                ...           3 years ago
  • 10.0.1                                ...           3 years ago
  • 10.0.0                                ...           3 years ago
  • 9.0.3                                ...           4 years ago
  • 9.0.2                                ...           4 years ago
  • 9.0.1                                ...           4 years ago
  • 9.0.0                                ...           4 years ago
  • 8.0.2                                ...           4 years ago
  • 8.0.1                                ...           4 years ago
  • 8.0.0                                ...           4 years ago
  • 7.0.6                                ...           6 years ago
  • 7.0.5                                ...           6 years ago
  • 7.0.4                                ...           6 years ago
  • 7.0.3                                ...           6 years ago
  • 7.0.2                                ...           6 years ago
  • 7.0.1                                ...           7 years ago
  • 7.0.0                                ...           7 years ago
  • 6.1.0                                ...           7 years ago
  • 6.0.1                                ...           7 years ago
  • 6.0.0                                ...           7 years ago
  • 5.1.4                                ...           7 years ago
  • 5.1.3                                ...           7 years ago
  • 5.1.2                                ...           7 years ago
  • 5.1.1                                ...           7 years ago
  • 5.1.0                                ...           7 years ago
  • 5.0.7                                ...           7 years ago
  • 5.0.6                                ...           7 years ago
  • 5.0.4                                ...           7 years ago
  • 5.0.3                                ...           7 years ago
  • 5.0.2                                ...           7 years ago
  • 5.0.1                                ...           7 years ago
  • 5.0.0                                ...           7 years ago
  • 4.0.6                                ...           7 years ago
  • 4.0.5                                ...           7 years ago
  • 4.0.4                                ...           7 years ago
  • 4.0.3                                ...           7 years ago
  • 4.0.2                                ...           7 years ago
  • 4.0.1                                ...           7 years ago
  • 4.0.0                                ...           7 years ago
  • 3.0.7                                ...           7 years ago
  • 3.0.6                                ...           7 years ago
  • 3.0.5                                ...           7 years ago
  • 3.0.4                                ...           7 years ago
  • 3.0.3                                ...           7 years ago
  • 3.0.2                                ...           7 years ago
  • 3.0.1                                ...           7 years ago
  • 3.0.0                                ...           7 years ago
  • 2.0.0                                ...           7 years ago
  • 1.6.4                                ...           7 years ago
  • 1.6.3                                ...           7 years ago
  • 1.6.2                                ...           7 years ago
  • 1.6.1                                ...           8 years ago
  • 1.6.0                                ...           8 years ago
  • 1.5.2                                ...           8 years ago
  • 1.5.1                                ...           8 years ago
  • 1.5.0                                ...           8 years ago
  • 1.4.13                                ...           8 years ago
  • 1.4.12                                ...           8 years ago
  • 1.4.11                                ...           8 years ago
  • 1.4.10                                ...           9 years ago
  • 1.4.9                                ...           9 years ago
  • 1.4.8                                ...           9 years ago
  • 1.4.7                                ...           9 years ago
  • 1.4.6                                ...           9 years ago
  • 1.4.5                                ...           9 years ago
  • 1.4.4                                ...           9 years ago
  • 1.4.3                                ...           9 years ago
  • 1.4.2                                ...           9 years ago
  • 1.4.1                                ...           9 years ago
  • 1.4.0                                ...           9 years ago
  • 1.3.3                                ...           9 years ago
  • 1.3.2                                ...           9 years ago
  • 1.3.1                                ...           9 years ago
  • 1.3.0                                ...           9 years ago
  • 1.1.0                                ...           10 years ago
  • 1.0.2                                ...           13 years ago
  • 1.0.1                                ...           13 years ago
  • 1.0.0                                ...           13 years ago
Maintainers (1)
Downloads
Today 0
This Week 13
This Month 61
Last Day 0
Last Week 48
Last Month 2
Dependencies (0)
None
Dev Dependencies (9)

Copyright 2013 - present © cnpmjs.org | Home |