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',
port: 6379,
password: 'XXXXX',
db: 0,
ttl: 600
});
var redisClient = redisCache.store.getClient();
redisClient.on('error', (error) => {
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);
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}`;
redisCache.wrap(key, (cb) => {
getUser(userId, cb);
}, { ttl: ttl }, (err, user) => {
console.log(user);
redisCache
.wrap(key, () => getUser(userId))
.then(console.log)
.catch(err => {
});
});
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}`;
multiCache.set('foo2', 'bar2', { ttl: ttl }, (err) => {
if (err) {
throw err;
}
multiCache.get('foo2', (err, result) => {
console.log(result);
multiCache.del('foo2');
});
});
multiCache.wrap(key2, (cb) => {
getUser(userId2, cb);
}, (err, user) => {
console.log(user);
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');
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.