cache-money-flow

LRU cache with locking

Cache Flow Money

cache-flow-money is a simple LRU cache for node.

It supports both synchronous and asynchrous population for the cache, and it supports locking items so they cannot be evicted.

npm install cache-flow-money

var LRUCache = require('cache-flow-money');
 
var maxItems = 10;
var options = {
  populatefunction(key) { return key + key; },
  async: false
};
var cache = new LRUCache(maxItems, options);
 
cache.get('foo') === 'foo-foo' // populated automagically 

You can also use async populate methods.

var options = {
  populatefunction(keycb) {
    cb(key + "-" + key);
  },
  async: true
};
 
var cache = new LRUCache(maxItems, options);
 
cache.get('foo', function(v) {
  v === 'foo-foo'; // populated 
});

Evicting items (which happens on inserts when cache is full), is O(n), with n being the number of items in the cache.

Everything else (retrieving, locking, unlocking, setting), is O(1).

You can lock items that are in use to prevent them from being evicted.

var cache = new LRUCache(5);
 
cache.set('foo', 'bar');
cache.set('baz', 'bam');
cache.lock('foo');
for (var i = 0; i < 10; ++i) {
  cache.set('foo' + i, i);
}
 
cache.get('foo'); // 'bar' 
cache.get('baz'); //  

Cache-flow-money is under an MIT Style (jslint) license.

See the LICENSE file for details.