考虑像 tomcat
这样处理 sessions
的java Web应用程序 . sessions
存储在内存中(在服务器重启期间可能是 serialized
到硬盘) .
对于 nodejs
应用程序,它不能自行处理会话,您可以使用https://github.com/expressjs/session上托管的名为 expressjs/session
的lib来开发会话 . 在查看 expressjs/session
文档时,您会看到此警告:
警告:默认的服务器端会话存储MemoryStore故意不是为 生产环境 环境设计的 . 它会在大多数情况下泄漏内存,不会扩展到单个进程,并且用于调试和开发 .
对我来说,将会话存储在内存中是当前在Java Web应用程序中完成的,没有任何问题 .
现在我的问题是:
-
在内存中存储会话是不是很糟糕?
-
如果在服务器重启期间丢失会话并且性能不是我的关注(因为我的应用程序规模),在内存中存储会话仍然是一个不好的做法
nodejs
?! (请参阅What is the use of a session store?)
1 回答
我认为在内存中进行会话是不好的做法,只有在开发过程中才能进行 . 这是因为在某种程度上,您需要对节点进程进行集群,这显然无法访问存储在不同进程中的会话 . 对于您的应用程序,您可能永远不需要多个进程,即使在某些时候可能会出现过多的不必要会话存储导致内存泄漏的情况 . 我建议你使用Redis作为你的会话商店或其他形式的数据库,如mongoDB,有一个类似的问题here可能有帮助 .