
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
@tijolotech/cache-manager-redis-cluster-store
Advanced tools
Redis store for node-cache-manager and cluster redis
Redis cache store for node-cache-manager.
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.
npm install cache-manager-redis-store --save
or
yarn add cache-manager-redis-store
See examples below on how to implement the Redis cache store.
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis-store').redisStore;
var config = {
socket: {
host: 'localhost', // default value
port: 6379, // default value
},
password: 'XXXXX',
db: 0,
ttl: 600
};
var redisCache = cacheManager.caching({
store: await redisStore(config),
});
// listen for redis connection error event
var redisClient = redisCache.store.getClient();
redisClient.on('error', (error) => {
// handle error here
console.log(error);
});
var ttl = 5;
await redisCache.set('foo', 'bar', { ttl: ttl });
// You can use either a Promise...
var result = await redisCache.get('foo');
console.log(result);
// ...or a callback
redisCache.get('foo', (err, result) => {
if (err) {
// handle error here
}
console.log(result);
});
// >> 'bar'
console.log(await redisCache.del('foo'));
// >> 1
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
});
});
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis-store').redisStore;
var redisCache = cacheManager.caching({ store: await redisStore({ ...config, 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
await multiCache.set('foo2', 'bar2', { ttl: ttl });
// Fetches from highest priority cache that has the key
var result = await multiCache.get('foo2');
console.log(result);
// >> 'bar2'
// Delete from all caches
await 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);
});
});
Want to help improve this package? We take pull requests.
The node-cache-manager-redis-store is licensed under the MIT license.
FAQs
Redis store for node-cache-manager and cluster redis
We found that @tijolotech/cache-manager-redis-cluster-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
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.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.