lru
A simple LRU cache supporting O(1) set, get and eviction of old keys
Installation
$ npm install lru
Example
var LRU = require('lru');
var cache = new LRU(2),
evicted
cache.on('evict',function(data) { evicted = data });
cache.set('foo', 'bar');
cache.get('foo');
cache.set('foo2', 'bar2');
cache.get('foo2');
cache.set('foo3', 'bar3');
cache.get('foo3');
cache.remove('foo2')
cache.remove('foo4')
cache.length
API
LRU( length )
Create a new LRU cache that stores length
elements before evicting the least recently used.
Optionally you can pass a an options map with additional options instead
{
max: maxElementsToStore,
maxAge: maxAgeInMilliseconds
}
If you pass maxAge
items will be evicted if they are older than maxAge
when you access them.
Returns: the newly created LRU cache
Properties
.length
The number of keys currently in the cache.
Methods
.set( key, value )
Set the value of the key and mark the key as most recently used.
Returns: value
.set( key, value )
Set the value of the key and mark the key as most recently used.
.get( key )
Query the value of the key and mark the key as most recently used.
Returns: value of key if found; undefined
otherwise.
.peek( key )
Query the value of the key without marking the key as most recently used.
Returns: value of key if found; undefined
otherwise.
.remove( key )
Remove the key/value pair from the cache.
Returns: an associative array containing {key: <key>, value: <value>}
.on( event, callback )
Respond to events. Currently only the evict
event is implemented. When a key is evicted, the callback is executed with an associative array containing the evicted key: {key: key, value: value}
.
Credits
A big thanks to Dusty Leary who
finished the library.
License
MIT