0.1.0 • Published 10 years ago

lfu-cache v0.1.0

Weekly downloads
167
License
MIT
Repository
github
Last release
10 years ago

lfu-cache for Node.js

This module implements an O(1) Least Frequently Used cache, as described in the paper "An O(1) algorithm for implementing the LFU cache eviction scheme" by K. Shah, A. Mitra and D. Matani.

It also features an "aging" parameter that penalizes objects that have not been accessed since Date.now() - aging * 1000, by halving their frequency every 'aging' seconds.

The cache emits an "eviction" event with parameters (key, value).

Usage

var lfu = require('lfu-cache')(
	2,   // max size of the cache
	60    // aging of the entries in seconds
);

lfu.on('eviction', function(key, obj) {
	console.log("test was evicted", key, obj);
});
lfu.set('test', {my: "val"});
lfu.set('test2', {my: "val2"});
lfu.get('test2');
lfu.set('test3', {my: "val2"});