![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
fl-cache-manager-redis
Advanced tools
Redis store for the node-cache-manager that stores keys in hashes based on a key's prefix
An alternate Redis store for the node-cache-manager module.
This module is a fork of node-cache-manager-redis. It has been altered to allow storing keys in hash sets rather than on their own to allow simpler deletion of grouped keys.
Why do this? When we're caching the results of some calls to a REST API and someone updates a model we'd like to wipe the caches for that model type and its relations. Boom!
npm install cache-manager-redis --save
Here are examples that demonstrate how to implement the Redis cache store.
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis');
var redisCache = cacheManager.caching({
store: redisStore,
host: 'localhost', // default value
port: 6379, // default value
auth_pass: 'XXXXX',
db: 0,
ttl: 600
});
var ttl = 5;
// listen for redis connection error event
redisCache.store.events.on('redisError', function(error) {
// handle error here
console.log(error);
});
redisCache.set('foo', 'bar', ttl, function(err) {
if (err) {
throw err;
}
redisCache.get('foo', function(err, result) {
console.log(result);
// >> 'bar'
redisCache.del('foo', function(err) {});
});
});
function getUser(id, cb) {
setTimeout(function () {
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, function (cb) {
getUser(userId, cb);
}, ttl, function (err, user) {
console.log(user);
// Second time fetches user from redisCache
redisCache.wrap(key, function (cb) {
getUser(userId, cb);
}, function (err, user) {
console.log(user);
});
});
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis');
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]);
userId2 = 456;
key2 = 'user_' + userId;
ttl = 5;
// Sets in all caches.
multiCache.set('foo2', 'bar2', ttl, function(err) {
if (err) { throw err; }
// Fetches from highest priority cache that has the key.
multiCache.get('foo2', function(err, result) {
console.log(result);
// >> 'bar2'
// Delete from all caches
multiCache.del('foo2');
});
});
// Note: ttl is optional in wrap()
multiCache.wrap(key2, function (cb) {
getUser(userId2, cb);
}, ttl, function (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, function (cb) {
getUser(userId2, cb);
}, function (err, user) {
console.log(user);
});
});
Urls should be in this format redis://[:password@]host[:port][/db-number][?ttl=value]
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis');
var redisCache = cacheManager.caching({
store: redisStore,
url: 'redis://:XXXX@localhost:6379/0?ttl=600'
});
// proceed with redisCache
npm test
or npm run coverage
If you would like to contribute to the project, please fork it and send us a pull request. Please add tests for any new features or bug fixes. Also make sure the code coverage is not impacted.
node-cache-manager-redis
is licensed under the MIT license.
FAQs
Redis store for the node-cache-manager that stores keys in hashes based on a key's prefix
The npm package fl-cache-manager-redis receives a total of 0 weekly downloads. As such, fl-cache-manager-redis popularity was classified as not popular.
We found that fl-cache-manager-redis demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.