gpt4 book ai didi

mysql - 使用 node-cache-manager 进行 Sequelize 缓存

转载 作者:行者123 更新时间:2023-11-29 20:18:16 25 4
gpt4 key购买 nike

我试图在我的 web 应用程序中引入最简单的缓存层,我想做的就是将一些查询的结果缓存 24 小时,因为这是数据库接收新数据的频率。我正在尝试使用 Node 缓存管理器(看起来很棒)但很挣扎!我认为我不完全理解它应该如何实现到 Sequelize 中。从外观上看,该示例正在使用 Mongoose 和 Mongo:

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));
});

我已经尝试遵循文档和示例,但正如前面提到的,这仍然每次都会影响数据库!非常感谢任何帮助!!!

最佳答案

我无法按照给出的示例使其工作,我必须每次都专门设置并从缓存中获取键值对。

现在它工作正常,结构如下:

memoryCache.get(cacheKey, function(err, result) {
if (result !== undefined){res.json({billingAddress12LastName: result});}
});

memoryCache.wrap(cacheKey, function (cacheCb) {
console.log("Fetching count from slow database");
table.count().then(data);
memoryCache.set(cacheKey, data, {ttl: ttl}, function(err) {
res.json({valuesCount: data});
});
}, cb);

仍然不明白包装函数是如何工作的以及它的用途,因为我现在正在显式设置和获取缓存值,仍然希望得到一些评论:)。

关于mysql - 使用 node-cache-manager 进行 Sequelize 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39617530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com