0
我正在尝试在我的webapp中引入最简单的缓存层,我想要做的就是缓存24小时查询的结果,因为这是数据库接收新数据的频率数据。我试图使用节点缓存管理器(看起来很棒),但挣扎!我不认为我完全理解它应该如何实施到续集。这个例子是用猫鼬和蒙戈通过它的外观:使用节点缓存管理器对续集缓存
function responder(res) {
return function respond(err, data) {
var startTime = moment(res.req._startTime);
var diff = moment().diff(startTime, 'ms');
if (err) {
err.status = 500;
res.render('error', {error: err});
} else {
data.requestTime = diff;
res.render('users/show', data);
}
};
}
function fetchUser(id, cb) {
var cacheKey = 'user_' + id;
memoryCache.wrap(cacheKey, function (cacheCb) {
console.log("Fetching user from slow database");
User.get(id, cacheCb);
}, cb);
}
router.get('/:id', function (req, res) {
fetchUser(req.param('id'), responder(res));
});
我使用的MySQL,目前拥有下面的例子,但我可以看到,查询每一次进入数据库,它似乎并没有被坚持或创建缓存...:
function responder(res) {
return function respond(err, data) {
var startTime = moment(res.req._startTime);
var diff = moment().diff(startTime, 'ms');
if (err) {
err.status = 500;
res.json({valuesCount: err});
} else {
data.requestTime = diff;
res.json({valuesCount: res});
}
};
}
function fetchCount(req, cb) {
var cacheKey = 'allDatabaseRecords',
table = sequelize.import('extracts');
memoryCache.wrap(cacheKey, function (cacheCb) {
console.log("Fetching count from slow database");
table.count().then(cacheCb);
}, cb);
}
router.post('/extract-tool/data-filter', function(req, res) {
var table = sequelize.import('extracts');
fetchCount(req, responder(res));
});
我已经试过了文档和例子以下,但这如前所述,这仍然命中每次DB!任何帮助都是无比的赞赏!