Socket
Socket
Sign inDemoInstall

cache-manager-ioredis

Package Overview
Dependencies
13
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cache-manager-ioredis

IORedis store for node-cache-manager


Version published
Weekly downloads
66K
increased by9.43%
Maintainers
1
Install size
509 kB
Created
Weekly downloads
 

Changelog

Source

v2.1.0 - 4 Jul, 2020

Added support for using an external Redis instance using the new redisInstance parameter. Special thanks to @marcoreni!

Readme

Source

build status coverage status dependencies status npm version GitHub issues

IORedis store for node cache manager

Redis cache store for node-cache-manager.

This package is a almost identical to node-cache-manager-redis-store, but uses ioredis instead of node_redis. It aims to provide the most simple wrapper possible by just passing the configuration to the underlying ioredis package.

Installation

npm install cache-manager-ioredis --save

or

yarn add cache-manager-ioredis

Usage Examples

See examples below on how to implement the IORedis cache store.

Single store

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

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

// listen for redis connection error event
var redisClient = redisCache.store.getClient();

redisClient.on('error', (error) => {
  // handle error here
  console.log(error);
});

var ttl = 5;

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

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

function getUser(id, cb) {
  setTimeout(() => {
    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, (cb) => {
  getUser(userId, cb);
}, { ttl: ttl }, (err, user) => {
  console.log(user);

  // Second time fetches user from redisCache
  redisCache
    .wrap(key, () => getUser(userId))
    .then(console.log)
    .catch(err => {
      // handle error
    });
});

Multi-store

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

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]);

var userId2 = 456;
var key2 = `user_${userId2}`;

// Set value in all caches
multiCache.set('foo2', 'bar2', { ttl: ttl }, (err) => {
  if (err) {
    throw err;
  }

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

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

// Note: ttl is optional in wrap
multiCache.wrap(key2, (cb) => {
  getUser(userId2, cb);
}, (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, (cb) => {
    getUser(userId2, cb);
  }, (err, user) => {
    console.log(user);
  });
});

Use Clustering (eg Amazon elasticache)

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

// https://github.com/luin/ioredis#cluster
var redisCache = cacheManager.caching({
  store: redisStore,
  clusterConfig: {
    nodes: [
      {
        port: 6380,
        host: '127.0.0.1'
      }, 
      {
        port: 6381,
        host: '127.0.0.1'
      }
    ],
    options: {
      maxRedirections: 16
    }
  }
});

Use an external Redis Instance

var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-ioredis');
var Redis = require('ioredis');

var redisInstance = new Redis({
  host: 'localhost',
  port: 6379,
  db: 0,
});

var redisCache = cacheManager.caching({
  store: redisStore,
  redisInstance: redisInstance
});

Contribution

Want to help improve this package? We take pull requests.

License

The node-cache-manager-ioredis is licensed under the MIT license.

FAQs

Last updated on 04 Jul 2020

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc