nice-cache

A node.js in-memory cache - get, set, or subscribe to the auto-updater loop

nice-cache

A nice in-memory cache for node.js. In addiction of the classic auto-flush mechanism, it comes with an auto-refresh mechanism.

Node version: 0.8.0 required

Build status:

Installation

npm install nice-cache

Usage

A simple usage with a web-server that consumes an API or reads from a DB:

  • Try getting a value from the cache
  • When a key is not found:
    • you set the value
    • then you subscribe a delegate function to the refresh loop, that will happen every 60 seconds.
var Cache = require('nice-cache'),
    http = require('http');
 
var cache = new Cache({ refreshInterval: 60 });
 
http.createServer(function (reqres) {
 
  var getUsers = function(callback){
    // do something asynchronous... 
    callback(err, result);
  };
 
  var users = cache.get('api-responses', 'users');
 
  if(!!users)
    return res.end(users);
 
  getUsers(function(errresult){
    cache.set('api-responses', 'users', result);
    cache.sub('api-responses', 'users', getUsers);
    res.end(result);
  });
 
}).listen(1337, '127.0.0.1');

API

Gets the current instance of the cache (eventually after creating it).

The optional options parameter can consist on one of more of the following properties:

  • singleton, bool, default true, when false returns a new instance after any initialisation.
  • refreshInterval, int, default 0, sets the refresh interval for the subscribed functions (seconds). When 0 it does nothing.
  • flushInterval, int, default 0, sets the flush interval for all the keys. When 0 it never flushes and so values never expire.
  • verbose, bool, default false, writes stuff on the console for debugging purposes.

Sets a value. Type is optional.

Gets a value. Type is optional. Returns undefined when a key is not found.

Cleans the cache

Subscribes the key-value assignment (paired with an optional type) to the refresh loop. The asynchronous function will need to have an (err, res) callback.

When key-value assignment previously subscribed to a refresh handler, performs the refresh action immediately (instead of waiting for the refreshInterval to expire). func is a callback(err, res) containing the result of the refresh action.

Tests

npm test

License

MIT

Contributors