2014-02-20 15 views
2

我需要每隔10分鐘收集一次數據並將這些數據存儲32小時。這意味着,我將有192個條目的這些數據,我需要經常訪問這192個條目。使用NodeJS存儲x小時的數據

起初我想使用一個數組,只是將元素推入它。如果我的計數器更高,我會刪除第一個元素(32小時前收集的元素)。不過,我認爲這可能會很慢。

另一種方法是將數據寫入linux上的/ tmp目錄,實際上並不在乎刪除它,而只是讀取最新的192個條目。

我還沒有發現這個谷歌搜索很多,所以任何人都可以指出我正確的方向嗎?

此外,如果數據在重新啓動/重新啓動機器時丟失,則不會出現問題。

回答

1

將其存儲在數組中將會比將其保存到磁盤的速度更快,並且每次要訪問時都必須重新讀取任何文件。

速度實際上應該是這種類型的操作完全不相干的,所以你可以做財產以後這樣的:

var updateArray = function(arr, newData) { 
    if (arr.length > 192) { 
     arr = arr.slice(1); // Remove first entry 
    } 
    arr[arr.length] = newData; 
    return arr; 
}; 
+0

然後它比我想象的更容易。我只是擔心切片陣列太貴了。但是,編寫文件並從/ tmp中讀取文件當然要慢一些。謝謝! – brdigi

0

對於這種要求,我建議存儲在快速緩存像Redis的數據或者memcache。您可以指定密鑰自行過期的時間。這樣它會非常快速,你不必明確地管理它。所以我建議緩存存儲數據的時間更長,並且緩存服務器可以與應用程序服務器分開,這樣數據在重新啓動時不會丟失。

另外我想指出的是/ tmp目錄不能被信任存儲任何東西,因爲它將不時被操作系統清理。

如果你想存儲數據,然後用db代替。