Skip to content
This repository has been archived by the owner on Dec 27, 2022. It is now read-only.

Node Cache Manager store for filesystem that saves the data in a file named with the hash of the key

License

Notifications You must be signed in to change notification settings

juristat/node-cache-manager-fs-hash

 
 

Repository files navigation

Node Cache Manager store for Filesystem

Build Status dependencies Status npm package node

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', //path for cached files
        ttl: 60 * 60,      //time to life in seconds
        subdirs: true,     //create subdirectories to reduce the 
                           //files in a single dir (default: false)
    }
});


(async () => {

    await diskCache.set('key', 'value');
    console.log(await diskCache.get('key')); //"value"
    await diskCache.del('key');
    console.log(await diskCache.get('key')); //undefined


    console.log(await getUserCached(5)); //{id: 5, name: '...'}
    console.log(await getUserCached(5)); //{id: 5, name: '...'}

    await diskCache.reset();

    function getUserCached(userId) {
        return diskCache.wrap(userId /* cache key */, 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.

About

Node Cache Manager store for filesystem that saves the data in a file named with the hash of the key

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%