All Projects → dabroek → node-cache-manager-ioredis

dabroek / node-cache-manager-ioredis

Licence: MIT license
Redis store for node-cache-manager using IORedis.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to node-cache-manager-ioredis

node-cache-manager-redis-store
Redis store for node-cache-manager using node_redis.
Stars: ✭ 117 (+148.94%)
Mutual labels:  redis-client, cache-manager, redis-store
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+38138.3%)
Mutual labels:  cache, redis-client
Stackexchange.redis.extensions
Stars: ✭ 419 (+791.49%)
Mutual labels:  cache, redis-client
salad
Asynchronous Scala Redis Client supporting Sentinel and Redis Cluster
Stars: ✭ 14 (-70.21%)
Mutual labels:  cache, redis-client
Redis
Vapor provider for RediStack
Stars: ✭ 434 (+823.4%)
Mutual labels:  cache, redis-client
Cachingframework.redis
Distributed caching based on StackExchange.Redis and Redis. Includes support for tagging and is cluster-compatible.
Stars: ✭ 209 (+344.68%)
Mutual labels:  cache, redis-client
Pottery
Redis for humans. 🌎🌍🌏
Stars: ✭ 204 (+334.04%)
Mutual labels:  cache, redis-client
CloudStructures
Redis Client based on StackExchange.Redis.
Stars: ✭ 124 (+163.83%)
Mutual labels:  redis-client
redis-developer.github.io
The Home of Redis Developers
Stars: ✭ 28 (-40.43%)
Mutual labels:  redis-client
SmartRedis
SmartSim Infrastructure Library Clients.
Stars: ✭ 37 (-21.28%)
Mutual labels:  redis-client
nestjs-ioredis
IORedis module for Nest
Stars: ✭ 21 (-55.32%)
Mutual labels:  ioredis
aioredis-cluster
Redis Cluster support extension for aioredis
Stars: ✭ 21 (-55.32%)
Mutual labels:  redis-client
spring-redisearch
Provides support for RediSearch in Spring
Stars: ✭ 31 (-34.04%)
Mutual labels:  redis-client
node-redis-connection-pool
A node.js connection manager for Redis
Stars: ✭ 52 (+10.64%)
Mutual labels:  redis-client
onecache
One caching API, Multiple backends
Stars: ✭ 126 (+168.09%)
Mutual labels:  cache
redis
efficient client ⚡️
Stars: ✭ 70 (+48.94%)
Mutual labels:  redis-client
echo-mw
统一移到hb-go/echo-web ☞
Stars: ✭ 17 (-63.83%)
Mutual labels:  cache
ng-nest-cnode
Angular 10 Front-End and Nestjs 7 framework Back-End build Fullstack CNode
Stars: ✭ 17 (-63.83%)
Mutual labels:  ioredis
rueidis
A Fast Golang Redis RESP3 client that supports Client Side Caching, Auto Pipelining, Generics OM, RedisJSON, RedisBloom, RediSearch, RedisAI, RedisGears, etc.
Stars: ✭ 422 (+797.87%)
Mutual labels:  redis-client
jimhttp
A library collection and web microframework
Stars: ✭ 25 (-46.81%)
Mutual labels:  redis-client

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].