Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions rediscache.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ module.exports = function(Model, options) {
var redis = require("redis"),
client = redis.createClient(clientSettings);

var redisDeletePattern = require('redis-delete-pattern');
var redisDeletePattern = require('redis-delete-pattern');

client.on("error", function (err) {
console.log(err);
// try to connect again with server config
if(err.toString().indexOf("invalid password") !== -1){
console.log("Invalid password... reconnecting with server config...");
var app = require('../../server/server');
var clientSettings = app.get('redis');
var clientSettings = app.get('redis');
client = redis.createClient(clientSettings);
}
});
Expand All @@ -31,7 +31,7 @@ module.exports = function(Model, options) {
var cachExpire = ctx.req.query.cache;

// set key name
var cache_key = modelName+'_'+new Buffer(JSON.stringify(ctx.req.query)).toString('base64');
var cache_key = modelName+'_'+new Buffer(JSON.stringify(ctx.req.url)).toString('base64');

// search for cache
client.get(cache_key, function(err, val) {
Expand All @@ -47,26 +47,26 @@ module.exports = function(Model, options) {
}else{
//return data
next();
}
});
}
});

}else{
next();
}
}else{
next();
}
});
}
});

Model.afterRemote('**', function(ctx, res, next) {
// get all find methods and search first in cache - if not exist save in cache
if((ctx.method.name.indexOf("find") !== -1 || ctx.method.name.indexOf("__get") !== -1) && client.connected){
if(typeof ctx.req.query.cache != 'undefined'){
var modelName = ctx.method.sharedClass.name;
var cachExpire = ctx.req.query.cache;

// set key name
var cache_key = modelName+'_'+new Buffer(JSON.stringify(ctx.req.query)).toString('base64');
var cache_key = modelName+'_'+new Buffer(JSON.stringify(ctx.req.url)).toString('base64');
// search for cache
client.get(cache_key, function(err, val) {
if(err){
Expand All @@ -80,23 +80,23 @@ module.exports = function(Model, options) {
next();
}else{
next();
}
});
}
});

}else{
next();
}
}else{
next();
}
}
});

Model.afterRemote('**', function(ctx, res, next) {
// delete cache on patchOrCreate, create, delete, update, destroy, upsert
if((ctx.method.name.indexOf("find") == -1 && ctx.method.name.indexOf("__get") == -1) && client.connected){
var modelName = ctx.method.sharedClass.name;
var cachExpire = ctx.req.query.cache;

// set key name
var cache_key = modelName+'_*';

Expand All @@ -113,6 +113,6 @@ module.exports = function(Model, options) {

}else{
next();
}
}
});
}
}