Commit 515409d4 authored by 刘文胜's avatar 刘文胜

缓存cacheable

parent 721ae3d6
var cache = require('./cacheable'); var cache = require('./cacheable');
var forumAboutMEService = require('../service/forumAboutMEService'); var forumAboutMEService = require('../service/forumAboutMEService');
cache.cacheable(forumAboutMEService, 'me2other', { ns: 'forum.service.forumAboutMEService222', dur: 10000 }); cache.cacheable(forumAboutMEService, 'me2other', { ns: 'forum.service.forumAboutMEService.me2other5', dur: 10 });
//cache.clear(forumAboutMEService,'me2other','forum.service.forumAboutMEService222') //cache.clear(forumAboutMEService,'me2other','forum.service.forumAboutMEService222')
\ No newline at end of file
...@@ -5,36 +5,53 @@ var async=require('async'); ...@@ -5,36 +5,53 @@ var async=require('async');
/**=====<1.缓存实现开始==========**/ /**=====<1.缓存实现开始==========**/
function toCache(dur, k, v) { function toCache(dur, k, v) {
if(v){ if(v){
var str = ''; redis.hset(dur.ns,k,1, function(err) {
try{ if(!err){
str = JSON.stringify(v); redis.expire(dur.ns, dur.dur);
if(str){ var str = '';
redis.hset(dur.ns,k,str , function(err) { try{
redis.expire(k, dur.dur); str = JSON.stringify(v);
}); }catch(e){
console.log(e);
}
if(str){
redis.set(k,str,function(err){
if(!err){
console.log('缓存过期时间:',dur.dur);
redis.expire(k, dur.dur);
}
});
}
} }
}catch(e){ });
console.log(e);
}
} }
} }
function fromCache(dur,k,cb){ function fromCache(dur,k,cb){
redis.hget(dur.ns,k, function(err,v){ redis.hget(dur.ns,k, function(err,hit){
if(err){ if(err){
return cb(err); console.log(err);
return cb();
}
if(!hit){
return cb();
} }
if(v){ redis.get(k, function(err,data){
if(err){
console.log(err);
return cb();
}
if(!data){
return cb();
}
var obj = null; var obj = null;
try{ try{
obj = JSON.parse(v); obj = JSON.parse(data);
cb(null,obj);
}catch(e){ }catch(e){
cb(e); console.log(err);
} }
}else{ cb(null,obj);
cb(null,null); });
}
}); });
} }
...@@ -130,7 +147,7 @@ module.exports = { ...@@ -130,7 +147,7 @@ module.exports = {
throw 'opts.ns 不能为空'; throw 'opts.ns 不能为空';
} }
if(!opts.dur || isNaN(opts.dur)){//默认缓存一小时 if(!opts.dur || isNaN(opts.dur)){//默认缓存一小时
opts.dur = 1000 * 60 * 60; opts.dur = 60 * 60;
} }
m[fn] = cacheable(m[fn], opts); m[fn] = cacheable(m[fn], opts);
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment