将会话保存在节点中的运行或数据库中

经过几天骚扰的人在stackoverflow我已经成功创build会议和pipe理他们。 但我想知道在哪里build议存储他们? 在数据库(我使用mongoDb),或在应用程序的运行内存(我把它们存储在一个变种)?

我会强烈build议使用会话pipe理模块,例如connect-mongo在mongodb中存储会话。 这样,如果你的服务器出现故障,会话仍然会被存储在数据库中,不会中断,而如果你将它们存储在内存中,会话将会丢失。 如果您必须在不同的服务器上维护相同的会话,它也是一个更具可扩展性的解决scheme。

如果您使用的是Express ,connect-mongo + Express.session()是为您的应用程序表示会话的最简单方法。

不要将它们作为variables存储在Node中。 在某个时候,您需要使用cluster模块来扩展您的应用程序,从而为每个工作进程提供自己的内存。 虽然可以在工作人员之间进行交stream,但是在内存和代码复杂性方面这不是一个好主意。

如果您已经在使用它,请将您的会话存储在mongo中。 将来,您的工作进程可以将其用作会话的共享内存池。