Я использую AWS лямбда. Мы пытались использовать модуль node-cache
для какого-то ключа с истечением срока действия для извлечения данных из другого API. Даже если данные устанавливаются. При поступлении следующего запроса node-cache
не может кэшировать эти данные.
вот мой пример кода
//not the original code
let ClassService = require("./NodeCacheTest");
exports.handler = async (event) => {
let classService = new ClassService();
classService.getKey("myKey", (err, value)=> {
console.log(value);
});
};
//NodeCacheTest
const NodeCache = require( "node-cache" );
const myCache = new NodeCache();
let CACHEDATA = {
testing: true,
time_to_live: 10
};
class NodeCacheTest {
constructor () {
let obj = { my: "Special", variable: 42 };
myCache.get( "myKey", function( err, value ){
if( err || value == undefined) {
console.log("No value available!!!");
myCache.set( "myKey", obj, 10000 );
console.log("value got cached!!!");
}
});
}
getKey(key, cb) {
let obj = { my: "Special", variable: 42 };
myCache.get( "myKey", function( err, value ){
if( err || value == undefined) {
console.log("No value available!!!");
myCache.set( "myKey", obj, 10000 );
console.log("value got cached!!!");
return cb(null,obj);
} else {
return cb(null, value);
}
});
}
}
module.exports = NodeCacheTest;
каждый раз, когда я нажимаю на конечную точку aws lambda
, используя Jmeter
... Я вижу, что для каждого звонка No value available!!!
печатается. Но когда я использую некоторую глобальную переменную, такую как CACHEDATA
, для реализации того же сценария, значение кэшируется. Может кто-нибудь может объяснить мне поведение в этом отношении.