Nostalgic Primordial Monster
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    cluster-cachepublic

    cluster-cache

    cache service to share data across workers/master

    • cache
    var cache = require('cluster-cache').use('cache-name', {
      'persist': true,//default false 
      'expire': 60000 //in ms, default 0, meaning no expiration 
    });
     
    • keys
    var cache;//assume the cache is in use as above 
     
    cache.keys({
      'wait': 100//this is a timeout option 
    })
    .then(function(keys){
    //the keys resolved is an array of all cached keys:string[] from the cache-manager's view 
    });
     
    //to use the cache, we assume u've started the cluster2 with caching enabled, and you can select how cache manager should be run 
    listen({
     
      'noWorkers': 1, //default number of cpu cores 
        'createServer': require('http').createServer,
        'app': app,
        'port': 9090,
        'monPort': 9091,
        'debug': { //node-inspector integration 
            'webPort': 9092,
            'saveLiveEdit': true
        },
        'ecv': {
          'mode': 'control',
          'root': '/ecv'
        },
        'cache': {
            'enable': true,//true by default 
            'mode': 'standalone'//as a standalone worker process by default, otherwise will crush with the master process 
        },
        'heartbeatInterval': 5000 //heartbeat rate 
    })

    Note that, we allow you to use caching w/o cluster2, if you want to enable caching from none cluster2 runtime, the feature could be enabled via:

     
    //you can use this in unit test too as we did 
    require('cluster-cache').enable();
     
    • get
    • with the loader, if concurrent get happens across the workers in a cluster, only one will be allowed to load while the rest will be in fact watch till that one finishes loading.
    • this will reduce the stress upon the backend services which loads exact same data nicely
    var cache;
     
    cache.get('cache-key-1', //key must be string 
      function(){
        return 'cache-value-loaded-1'; //value could be value or promise 
      },
      {
        'wait': 100//this is a timeout option 
      })
      .then(function(value){
        //the value resolved is anything already cached or the value newly loaded 
        //note, the loader will be called once and once only, if it failed, the promise of get will be rejected. 
      },
      function(error){
      
      });
    • set
    var cache;
     
    cache.set('cache-key-1', //key must be string 
      'cache-value-loaded-1', //value could be any json object 
      {
        'leaveIfNotNull': false,//default false, which allows set to overwrite existing values 
        'wait': 100
      })
      .then(function(happens){
        //the happens resolved is a true/false value indicating if the value has been accepted by the cache manager 
      },
      function(error){
      
      });
    • del
    var cache;
     
    cache.del('cache-key-1', //key must be string 
      {
        'wait': 100//this is a timeout option 
      })
      .then(function(value){
        //the old value deleted 
      });
    • watch
    var cache;
     
    cache.watch('cache-key-1', //key must be string or null (indicating watch everything) 
      function watching(value, key){
        //this is a callback which will be called anytime the associatd key has an updated value 
      });
    • unwatch
    var cache;
     
    cache.unwatch('cache-key-1', watching);//stop watching 

    Keywords

    none

    install

    npm i cluster-cache

    Downloadslast 7 days

    8

    version

    0.5.0-SNAPSHOT.1388759957720

    license

    none

    repository

    github.com

    last publish

    collaborators

    • avatar
    • avatar
    • avatar