Nodejs会话pipe理与java服务器会话pipe理相比较
考虑一个类似tomcat
的Java web应用程序,它处理sessions
。 sessions
存储在内存中(并且可以在服务器重启时serialized
到硬盘)。
对于不能自行处理会话的nodejs
应用程序,可以使用https://github.com/expressjs/session托pipe的一些名为expressjs/session
库来开发会话。 在查看expressjs/session
文档时,您会看到以下警告:
警告:默认的服务器端会话存储器
MemoryStore
故意不是为生产环境而devise的。 它会在大多数情况下泄漏内存,不会通过单个进程扩展,而是用于debugging和开发。
对我来说,将会话存储在内存中是目前在java web应用程序中所做的,没有任何问题。
现在我的问题是:
- 在会话中存储会话是一个不好的做法?!
- 如果在服务器重新启动期间失去会话并且性能不是我所关心的(因为我的应用程序规模),将会话存储在内存中仍然是
nodejs
不好的做法? (请参阅会话存储的用途是什么? )
我认为在内存中进行会话是不好的做法,只有在开发过程中才应该做。 这是因为在一定程度上,您需要对节点进程进行集群化,这显然会导致无法访问存储在不同进程中的会话。 您可能永远不需要为您的应用程序提供多个进程,即使如此,在某些时候可能会出现一些导致内存泄漏的不必要的会话存储。 我build议与Redis一起作为你的会话存储或者像mongoDB这样的一些其他forms的数据库,在这里有一个类似的问题可能会有帮助。