Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
cache-manager-ioredis
Advanced tools
Changelog
v2.1.0 - 4 Jul, 2020
Added support for using an external Redis instance using the new redisInstance
parameter. Special thanks to @marcoreni!
Readme
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.
npm install cache-manager-ioredis --save
or
yarn add cache-manager-ioredis
See examples below on how to implement the IORedis cache 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
});
});
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);
});
});
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
}
}
});
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
});
Want to help improve this package? We take pull requests.
The node-cache-manager-ioredis
is licensed under the MIT license.
FAQs
IORedis store for node-cache-manager
The npm package cache-manager-ioredis receives a total of 53,682 weekly downloads. As such, cache-manager-ioredis popularity was classified as popular.
We found that cache-manager-ioredis demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.