3.0.1 • Published 3 years ago

cache-manager-redis-store v3.0.1

Weekly downloads
31,353
License
MIT
Repository
github
Last release
3 years ago

npm version GitHub issues

Redis store for node cache manager

Redis cache store for node-cache-manager.

How is this package different from node-cache-manager-redis?

This is a completely different version than the earlier node-cache-manager-redis. This package does not use redis-pool which is unnecessary and not actively maintained.

This package aims to provide the most simple wrapper possible by just passing the configuration to the underlying node_redis package.

Installation

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

or

yarn add cache-manager-redis-store

Usage Examples

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

Single store

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

var redisCache = cacheManager.caching({
  store: redisStore,
  host: 'localhost', // default value
  port: 6379, // default value
  auth_pass: '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-redis-store');

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

Contribution

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

License

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

alerts-controller@d19n/schema-manager@ccontour/home-cli@steggy/controller-sdk@steggy/custom-code@steggy/google@steggy/home-cli@steggy/persistencedefiyield-backend@plogg-rely/microservicesapi-catalogues@everything-registry/sub-chunk-1283@digital-alchemy/automation-logic@digital-alchemy/boilerplate@digital-alchemy/config-builder@digital-alchemy/gotify@digital-alchemy/hass-cli@digital-alchemy/hass-type-generate@digital-alchemy/home-assistant@digital-alchemy/log-formatter@digital-alchemy/mqtt@digital-alchemy/pi-matrix@digital-alchemy/pi-matrix-client@digital-alchemy/render-utils@digital-alchemy/rgb-matrix@digital-alchemy/sampler-app@digital-alchemy/server@digital-alchemy/testing@digital-alchemy/ttytapestry-wptapestry-litewechat-weixin@doquoctuan/nestjs-common@dreamworld/redis-cachejh-delvery-server@sale-project/s-nest@sale-project/s-utilolympus-besubastas-utils@app-market/session-module@avaloon/lib@automagicl/home-cli@birdgang/lib-commonydr-nest-commonunique-sdkzuntav2-main@dtt-framework/nest-v1@ftw-cloud/core@mahyar-kd/nestjs-common-module@magnetmlm/common-backend@m8a/core@mpcast/core@muta-extra/knex-mysql@nclabs/nestjs-rpc-module@earnkeeper/ekp-sdk-nestjs@midgar/redis-cache@kei.fi/api-common@jiaxinjiang/nest-redis@jonasbpa/mkt-base@km-common/cache@jianghohwason/nt-addon-wechatapi@juicyllama/dev@samagra-x/stencil@regiondev/nestjs-common@regiondev/nestjs-integrations@regiondev/nestjs-security@richiebono/rate-limit-middleware@richiebono/users-api@rjombo/kit@ordent/ramencup@ordentco/ramencup@peersyst/cache-backend-module@snapkyupd/nestjs-micro-core@soorajk1/nestjs-monitor@soorajk1/test-monitor@soorajk1/examplemuvi-gatewaymuvi-identity-servicemicroservice-modulemhkrj-commonmicroservicesglobalmy-service-framework-nestscraper-utilsscraper-utils2raptor-authncuratednestjs-cache-wrappernest-usenew_test_qinnode_nest_devglobal-micro-servicegloabal-micro-servicehichchi-nestjs-commonhichchi-testlock_and_cache_managerlogger_middleware_redis@thinkvn/page-cache@thefoxjob/paperwork@tinkle/nest-common@tradex-binary/blockchain-common
3.0.1

3 years ago

3.0.0

3 years ago

2.0.0

5 years ago

1.5.0

7 years ago

1.4.0

7 years ago

1.3.0

7 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago