2016-09-27 68 views
0

我想知道是否是一個好主意(性能明智)將查詢結果存儲在變量中,並每隔幾分鐘更新一次,因爲我在我的多個數據庫查詢(MongoDB)節點應用程序不需要是最新的,其中一些應用程序有點複雜。使用變量作爲緩存查詢結果在NodeJS

我想是這樣的:

var queryResults = []; 
myModel.find().exec(function(err, results) { 
    queryResults = results; 
}); 

然後:

var interval = 10 * 60 * 1000; 
setInterval(function() { 
    myModel.find().exec(function(err, results) { 
     queryResults = results; 
    }); 
}, interval); 

當我需要將查詢結果發送到我的看法引擎:

app.get('/', function(req, res) { 
    res.render('index.ejs', {entries : queryResults}); 
}); 

這是緩存並向多個客戶端顯示相同查詢結果的好方法嗎?

回答

0

您可以使用此模塊而不是創建緩存層: https://www.npmjs.com/package/memory-cache

你必須要小心,不要把大量的數據到內存中。如果你想推動數百萬的結果,可能這不是一個好主意。

+0

你知道這個包比直接使用變量好嗎? – Grobeu

+0

該模塊也將這些值存儲在內存中,因此從這個角度來看沒有區別。如果你檢查源代碼,理解它在做什麼很容易。使用這個你將避免創建你的緩存層。 –