Nodejs会话管理与java服务器会话管理相比较

时间:2016-05-11 04:18:28

标签: node.js session servlets express

考虑像tomcat这样的java Web应用程序,它处理sessionssessions存储在内存中(在服务器重启期间可能serialized到硬盘。)

对于不自行处理会话的nodejs应用程序,您可以使用https://github.com/expressjs/session处托管的名为expressjs/session的lib来开发会话。在查看expressjs/session文档时,您会看到此警告:

  

警告:默认的服务器端会话存储MemoryStore是   故意不是为生产环境而设计的。它会泄漏   在大多数情况下,内存不会扩展到单个进程,   并且用于调试和开发。

对我来说,将会话存储在内存中是当前在Java Web应用程序中完成的,没有任何问题。

现在我的问题是:

  1. 在内存中存储会话是一个不好的做法吗?!
  2. 如果在服务器重启期间丢失会话并且性能不是我的关注(因为我的应用程序规模),在nodejs中将会话存储在内存中仍然是一种不好的做法? (请参阅What is the use of a session store?

1 个答案:

答案 0 :(得分:1)

我认为在内存中进行会话是不好的做法,只有在开发中进行时才应该这样做。这是因为在某种程度上您需要对节点进程进行聚类,这显然是因为它无法访问存储在不同进程中的会话。对于您的应用程序,您可能永远不需要多个进程,即使如此,在某些时候可能会存在太多不必要的会话存储导致内存泄漏。我建议您使用Redis作为会话商店或其他形式的数据库,例如mongoDB,有一个类似的问题here可能有帮助。

相关问题