seneca-cache
Node.js Seneca in-memory caching module.
This module is a plugin for the Seneca framework. It provides a set of common caching actions (get
, set
etc.), backed by lru-cache.
It also exposes some lru-cache specific actions (peek
, has
, keys
, values
, reset
).
By moving cache operations into Seneca, you can change your cache implementation or business rules at a later point. For example, you might decide to send certain kinds of keys to a different cache mechanism, such as redis.
Current Version: 0.1.4
Tested on: Seneca 0.5.21, Node 0.10.31
Quick example
This code snippet sets a value and then retrieves it.
var seneca = require('seneca')();seneca.use('cache'); seneca.ready(function(err) { seneca.act({role: 'cache', cmd: 'set', key: 'k1', val: 'v1'}, function(err) { seneca.act({role: 'cache', cmd: 'get', key: 'k1'}, function(err, out) { console.log('value = ' + out) }); });});
The full action argument pattern can be a bit tedious, so use a Seneca pin to make things more convenient:
var cache = seneca.pin({role:'cache', cmd:'*'}); cache.set({key: 'k1', val: 'v1'}, function(err) { cache.get({key:'k1'}, function(err, out) { console.log('value = ' + out); });});
Install
npm install senecanpm install seneca-cache
Common Cache API
Seneca has a common caching API with the following actions:
role:cache, cmd:set
store a value - key and val arguments requiredrole:cache, cmd:get
retreive a value - key argument is requiredrole:cache, cmd:add
store a value, only if the key does not exist - key and val arguments requiredrole:cache, cmd:delete
delete a value - key argument is required, no error if key does not existrole:cache, cmd:incr
increment a value - key and val (integer) arguments requiredrole:cache, cmd:decr
decrement a value - key and val (integer) arguments required
All caching plugins, including this one, implement this action API.
Options
You can use any of the options from the lru-cache module directly as options to this plugin:
seneca.use('cached', { lrucache: { max: 1000, maxAge: 1000 * 60 * 60, length: function(n) {return n.length} }});
Test
mocha test/cache.test.js