🚀 Big News:Socket Has Acquired Secure Annex.Learn More →
Socket
Book a DemoSign in
Socket

cache-manager-store-redis

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cache-manager-store-redis

Redis store for the node-cache-manager

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
6
-53.85%
Maintainers
1
Weekly downloads
 
Created
Source

Node Cache Manager store for Redis

Codacy Badge Codacy Badge Dependency Status

The Redis store for the node-cache-manager module.

Changes on original repo

  • Remove redis-pool which is not necessary. See https://github.com/NodeRedis/node_redis/issues/226
  • Use mget command to merge redis requests.

Installation

npm install cache-manager-store-redis --save

Usage examples

Here are examples that demonstrate how to implement the Redis cache store.

Single store

var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-store-redis');

var redisCache = cacheManager.caching({
	store: redisStore,
	host: 'localhost', // default value
	port: 6379, // default value
	auth_pass: 'XXXXX',
	db: 0,
	ttl: 600
});

var ttl = 5;

// listen for redis connection error event
redisCache.store.events.on('redisError', function(error) {
	// handle error here
	console.log(error);
});

// Pass in an existing node_redis compatible client
var redisCache = cacheManager.caching({
  store: redisStore,
  createClient: function () {
    return redis.createClient(...)
  }
});

redisCache.set('foo', 'bar', ttl, function(err) {
    if (err) {
      throw err;
    }

    redisCache.get('foo', function(err, result) {
        console.log(result);
        // >> 'bar'
        redisCache.del('foo', function(err) {});
    });
});

function getUser(id, cb) {
    setTimeout(function () {
        console.log("Returning user from slow database.");
        cb(null, {id: id, name: 'Bob'});
    }, 100);
}

var userId = 123;
var key = 'user_' + userId;

// Note: ttl is optional in wrap()
redisCache.wrap(key, function (cb) {
    getUser(userId, cb);
}, ttl, function (err, user) {
    console.log(user);

    // Second time fetches user from redisCache
    redisCache.wrap(key, function (cb) {
        getUser(userId, cb);
    }, function (err, user) {
        console.log(user);
    });
});

Multi-store

var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-store-redis');

var redisCache = cacheManager.caching({store: redisStore, db: 0, ttl: 600});
var memoryCache = cacheManager.caching({store: 'memory', max: 100, ttl: 60});

var multiCache = cacheManager.multiCaching([memoryCache, redisCache]);


userId2 = 456;
key2 = 'user_' + userId;
ttl = 5;

// Sets in all caches.
multiCache.set('foo2', 'bar2', ttl, function(err) {
    if (err) { throw err; }

    // Fetches from highest priority cache that has the key.
    multiCache.get('foo2', function(err, result) {
        console.log(result);
        // >> 'bar2'

        // Delete from all caches
        multiCache.del('foo2');
    });
});

// Note: ttl is optional in wrap()
multiCache.wrap(key2, function (cb) {
    getUser(userId2, cb);
}, ttl, function (err, user) {
    console.log(user);

    // Second time fetches user from memoryCache, since it's highest priority.
    // If the data expires in the memory cache, the next fetch would pull it from
    // the 'someOtherCache', and set the data in memory again.
    multiCache.wrap(key2, function (cb) {
        getUser(userId2, cb);
    }, function (err, user) {
        console.log(user);
    });
});

Tests

  • Run a Redis server
  • Run tests npm test or npm run coverage

Contribution

If you would like to contribute to the project, please fork it and send us a pull request. Please add tests for any new features or bug fixes. Also make sure the code coverage is not impacted.

License

node-cache-manager-store-redis is licensed under the MIT license.

Keywords

cache

FAQs

Package last updated on 18 Dec 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts