LRU cache top on Map-like. Support non-string key.
- Based on Map-like
- It means that allow to use object as key
- Tiny size: 2kb
env bundle minify gzip
-- 13.8 kB 6.32 kB 2.34 kB
I have used isaacs/node-lru-cache, but this library is large for me.
env bundle minify gzip
-- 43.9 kB 27.5 kB 10.1 kB
Install with npm:
npm install lru-map-like
const {LRUMapLike} = require("lru-map-like");
const cache = new LRUMapLike(3);
cache.set(0, "a");
cache.set(1, "b");
cache.set(2, "c");
assert.deepEqual(cache.values(), ["a", "b", "c"]);
// over limit(3)
cache.set(-1, "ADDED");
assert.deepEqual(cache.values(), ["b", "c", "ADDED"]);
Object as key are fully supported. It is map-like feature.
const LRUMapLike = require("lru-map-like");
const cache = new LRUMapLike();
const keyObject = {};
const valueObject = {};
cache.set(keyObject, valueObject);
assert.strictEqual(cache.get(keyObject), valueObject);
assert.notStrictEqual(cache.get({}), valueObject);
LRU cache implementation Based on https://github.com/rse/cache-lru
set the cache limit
Returns: number
set the cache limit
Parameters
max
: number
configure function to be called before item is disposed
Parameters
cb
: Function
Returns: LRUMapLike
get size of items
Returns: number
get keys of all items in order
Returns: Array<Any>
get values of all items in order
Returns: Array<Any>
iterate over all items in order
Parameters
cb
: function (value, key)ctx
: Any
Returns: Any
check whether item exists under key
Parameters
key
: Any
Returns: boolean
get value under key without promoting item
Parameters
key
: Any
Returns: Any
get value under key
Parameters
key
: Any
Returns: (Any | undefined)
set key as value
Parameters
key
: Any - string, object etc..val
: Any
Returns: LRUMapLike
delete item under key
Parameters
key
: Any
Returns: LRUMapLike
delete all items
Returns: LRUMapLike
See Releases page.
Install devDependencies and Run npm test
:
npm i -d && npm test
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT © azu
This library based on https://github.com/rse/cache-lru
Copyright (c) 2015-2016 Ralf S. Engelschall (http://engelschall.com/)