Node/Express 应用查询第 3 方 API 并将响应存储在 memcache/redis 中 30 分钟以供将来查询
Node/Express app to query a 3rd party API and store response in memcache/redis for 30 mins for future queries
这里是关于应用程序结构的一般查询。基本上我有一个 SPA,旨在显示来自第 3 方的赔率 API。
为了减少 API 的工作量,我想构建一个 node/express 中间件,以便查询首先检查 memcache/redis 缓存,如果缓存,同样值,return 数据,如果未缓存,则点击 API 和 return 响应,同时添加到缓存以供将来查询 X 的时间限制。(不确定我是否' d 需要像 mongodb 这样的实际数据库来使用缓存)
这里我想实现的关键部分是缓存,因为我想避免 API 在数据相同时必须响应,因此缓存。
我想我的问题是上面的场景是否有意义,或者我是否在开始之前就把它复杂化了?
对任何错误表示歉意,后端和缓存对我来说是个新手。
提前致谢
想法是首先检查数据是否在缓存中,如果不在缓存中,则从 API 中获取并写入缓存。
这是 redis
和 request
的示例实现
function getThirdParty(req,res){
//unique identifier for the cache
const redisKey = req.body.key
//check the result is in cache
client.getAsync(redisKey).then(function(result) {
if(result){
res.json({
result:result,
cache:true
})
}else{
//not in cache made the api request
request('http://www.thirdpartyapi.com', function (error, response, body) {
//set the api result in cache
client.set(redisKey,body);
res.json({
result:body,
cache:false
})
});
}
});
}
这里是关于应用程序结构的一般查询。基本上我有一个 SPA,旨在显示来自第 3 方的赔率 API。
为了减少 API 的工作量,我想构建一个 node/express 中间件,以便查询首先检查 memcache/redis 缓存,如果缓存,同样值,return 数据,如果未缓存,则点击 API 和 return 响应,同时添加到缓存以供将来查询 X 的时间限制。(不确定我是否' d 需要像 mongodb 这样的实际数据库来使用缓存)
这里我想实现的关键部分是缓存,因为我想避免 API 在数据相同时必须响应,因此缓存。
我想我的问题是上面的场景是否有意义,或者我是否在开始之前就把它复杂化了?
对任何错误表示歉意,后端和缓存对我来说是个新手。
提前致谢
想法是首先检查数据是否在缓存中,如果不在缓存中,则从 API 中获取并写入缓存。
这是 redis
和 request
function getThirdParty(req,res){
//unique identifier for the cache
const redisKey = req.body.key
//check the result is in cache
client.getAsync(redisKey).then(function(result) {
if(result){
res.json({
result:result,
cache:true
})
}else{
//not in cache made the api request
request('http://www.thirdpartyapi.com', function (error, response, body) {
//set the api result in cache
client.set(redisKey,body);
res.json({
result:body,
cache:false
})
});
}
});
}