簡體   English   中英

我應該如何在Node中管理內存中的數據?

[英]How should I manage in-memory data in Node?

我在服務器端使用Node,Express和Socket.io構建了一個簡單的應用程序。 我的頁面在需要檢索不會更改的數據時查詢我的API,並使用WebSockets從服務器獲取動態數據的實時更新。 該應用程序允許一個人(“主管”)將問題發送給任意數量的“用戶”(未經身份驗證),並在滴入時查看他們的答案。用戶使用POST請求將其數據發送到服務器,通過WebSocket流到Supervisor。 服務器將用戶數據存儲在一個簡單的數組中,並使用數組(用戶)中的項目的ES6映射到包含其每個問題和答案的對象,如下所示:

class User {}
let users = [], qa = new Map();
io.on('connection', socket => {
  let user = new User(socket.id);
  users.push(user);
  qa.set(user, {});
  socket.on('question-answered', ({id, answer}) => {
    let questionData = qa.get(user);
    questionData[id] = answer;
    qa.set(user, questionData);
  });
});

顯然,這是一種非常原始的數據處理方式,但我認為不需要額外的復雜性。 數據不需要在服務器崩潰或重新啟動時就持久化(用戶的問題和答案也存儲在localStorage中),而MongoDB甚至Redis似乎對於這種數據來說已經過時了。

所以我的問題是,我是否會以正確的方式進行操作? 有什么我想念的地方嗎? 我只想要一種簡單的方法將數據存儲在內存中,並能夠通過客戶端GET請求和socket.io訪問它。 感謝您的任何幫助。

如果一個數組和一個映射為您提供了對數據的訪問類型,並且您不需要崩潰持久性,並且您有足夠的內存量來容納數據量,那么您就可以完成。

除非您的需求(查詢,持久性,性能,多用戶,崩潰恢復,備份等)需要更復雜的東西,否則就沒有其他需要了。 這里有一個簡單的陳詞濫調:如果它沒有破裂,就不需要修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM