Node Cache Manager store for Filesystem
A Filesystem store for the node-cache-manager module
Installation
npm install cache-manager-fs-hash --save
Features
- Saves anything that is
JSON.stringify
-able to disk - Buffers are saved as well (if they reach a certain size they will be stored to separate files)
- Works well with the cluster module
Usage example
Here is an example that demonstrates how to implement the Filesystem cache store.
const cacheManager = require('cache-manager');
const fsStore = require('cache-manager-fs-hash');
const diskCache = cacheManager.caching({
store: fsStore,
options: {
path: 'diskcache',
ttl: 60 * 60,
subdirs: true,
}
});
(async () => {
await diskCache.set('key', 'value');
console.log(await diskCache.get('key'));
await diskCache.del('key');
console.log(await diskCache.get('key'));
console.log(await getUserCached(5));
console.log(await getUserCached(5));
await diskCache.reset();
function getUserCached(userId) {
return diskCache.wrap(userId, function () {
return getUser(userId);
});
}
async function getUser(userId) {
return {id: userId, name: '...'};
}
})();
How it works
The filename is determined by the md5 hash of the key
. (The key
is also saved in the file to detect hash collisions. In this case it will just return a cache miss). Writing is performed with .lock files so that multiple instances of the library (e.g. using the cluster module) do not interfere with one another.
Tests
npm test
License
cache-manager-fs-hash is licensed under the MIT license.