11.2.11 • Published 12 months ago

tiny-lru v11.2.11

Weekly downloads
259,990
License
BSD-3-Clause
Repository
github
Last release
12 months ago

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.

fastify.js@infinitebrahmanuniverse/nolb-tiny-l@everything-registry/sub-chunk-2948woodlandxiorxena-go-widgetsuspensefulsveisvei-fast-proxy@domestika/decorators@cond/maxmind@connected/reactazka-serverjifrojifykeyv-lrukeyv-lru-wrapperlasintez-fastify-but-i-just-test-readmekysely-cacheucsc-xena-genesetturtle.iotiny-etag@archimedes/arch@appigram/keyv-lru@bluelibs/apollo-bundle@chcpayment/fastify@benzene/core@benzene/extra@benzene/persisted@deboxsoft/module-serveruse-redaxios@dxos/broadcast@graphql-hive/client@graphql-hive/core@graphql-hive/yoga@graphql-ez/plugin-automatic-persisted-queries@gvol-org/mapbox-gl@guild-docs/server@guildql/parser-cache@guildql/validation-cache@greatnonprofits-nfp/temba-components@greguintow/mercurius@graphql-yoga/plugin-persisted-queries@fourze/core@fjedi/graphql-api@glific/temba-components@iso-react/data@mrapi/graphql@mercuriusjs/gateway@graphql-mesh/utils@inf1k/fastify-gql@sagi.io/maxmind@s-ui/decorators@paulxuca/graphql-yoga@notadd/http@nyaruka/temba-components@pablosz/graphql-hive-clientnativestylernubrabra-express-gqlrozurate-limiter-captchanode-maxmind-largefilesrest-bridgeram64graphyne-coregraphql-fastify-servergraphql-ezgraphql-hooks-memcacheguild-docsgraphql-metallru-memorisemapglvmapbox-gl-hxmercuriusmercurius-caisymercurius-ibytemercurius-temp-dantemaxmind-nedmediamaxmind@vidstep/maxmind@vdtn359/mercuriusawdb_nodejscallback-patternsdivyproxyexpress-gqlfastify-gqlfastify-gql-forkfast-proxyfast-proxy-liteflumeview-skiplistfastify-slow-downfastify-rate-limit-customgeo-ip-service@stefanoruth/fetch-hooks@t.voslar/fastify-gql
11.2.8

12 months ago

11.2.9

12 months ago

11.2.7

12 months ago

11.2.10

12 months ago

11.2.11

12 months ago

11.2.6

1 year ago

11.2.4

2 years ago

11.2.5

2 years ago

11.2.2

2 years ago

11.2.3

2 years ago

11.2.1

2 years ago

11.2.0

2 years ago

11.1.1

2 years ago

11.1.2

2 years ago

11.1.0

2 years ago

10.4.1

2 years ago

10.2.0

2 years ago

10.2.1

2 years ago

10.4.0

2 years ago

10.2.2

2 years ago

11.0.0

2 years ago

11.0.1

2 years ago

10.1.0

2 years ago

10.1.1

2 years ago

10.3.0

2 years ago

10.0.0

3 years ago

10.0.1

3 years ago

9.0.3

3 years ago

9.0.2

3 years ago

9.0.1

3 years ago

9.0.0

3 years ago

8.0.2

3 years ago

8.0.1

3 years ago

8.0.0

3 years ago

7.0.6

5 years ago

7.0.5

5 years ago

7.0.4

5 years ago

7.0.3

5 years ago

7.0.2

6 years ago

7.0.1

6 years ago

7.0.0

6 years ago

6.1.0

6 years ago

6.0.1

6 years ago

6.0.0

6 years ago

5.1.4

6 years ago

5.1.3

6 years ago

5.1.2

6 years ago

5.1.1

6 years ago

5.1.0

6 years ago

5.0.7

6 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

7 years ago

1.6.0

7 years ago

1.5.2

7 years ago

1.5.1

7 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

8 years ago

1.4.9

8 years ago

1.4.8

8 years ago

1.4.7

8 years ago

1.4.6

8 years ago

1.4.5

8 years ago

1.4.4

8 years ago

1.4.3

8 years ago

1.4.2

8 years ago

1.4.1

8 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.2.1

9 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.2

12 years ago

1.0.1

12 years ago

1.0.0

12 years ago