可以将数据caching到节点应用程序中的过程对象中

当我用节点(Express,实际上和GitHub ^ _ ^中的开源)做一个博客应用程序时,我发现全局对象“process”(或其他全局对象)可以被每个用户访问,这里是testing中间件:

在这里输入图像描述

也许我应该直接放置代码:

app.use(function (req, res, next) { if(req.session.user.login){ if(!process.name) { process.name = {length: 0}; } if(Object.keys(process.name).indexOf(req.session.user.id) === -1){ process.name['length'] += 1; process.name[req.session.user.id] = req.session.user.username; } console.log('######################'); console.log('Connection count:%d',process.name['length']); console.log('Memory usage:%s', parseInt(process.memoryUsage().heapUsed)/(1024*1024),'MB'); } next(); }); 

所以,我认为是否有一个捷径将数据从某处(我的情况是MongoDB的mongoose数据)存储到内存中,而不是使用redis(这对我来说更多的是学习成本),而只是将数据caching到进程中 – – 节点中的全局对象。

我担心内存泄漏(或称为“stackoverflow”?+ _ +),所以我通过添加下面的代码来testing内存的使用情况:

 console.log('Memory usage:%s',parseInt(process.memoryUsage().heapUsed)/(1024*1024),'MB'); 

日志显示,当有两个用户login时,使用量约为20MB。

顺便说一句:据我了解,节点V8引擎限制内存最大使用量约为700M,这是否影响? 提前致谢; (忽略我可怜的英语;-))