Mar*_*jur 5 variables scaling key-value redis node.js
我正在Node.JS中开发一个Socket.IO支持的实时应用程序,在任何给定时刻将由几百个用户同时使用,我需要存储关于每个连接客户端的一些基本细节(并删除这些细节)客户断开连接).
我已经读过,使用键值存储(例如Redis)是存储此类数据的首选.
var connectedClientsData = {}与将数据存储在像Redis这样的键值存储中相比,为什么将数据存储在常规的应用内变量(对象,例如)中是不好的?
是否只支持扩展(例如,多个基于NodeJS的应用服务器可以连接到单个中央键值存储),还是有一些更严重的缺点?
有几个问题在起作用:
1)是的,缩放。不仅可以连接到多个服务器,还可以通过“集群”(您可以在 npm 上找到)之类的方式连接到多个 CPU。
2) V8 目前由于其基于浏览器的传统而存在内存限制。它们在某种程度上是可以调整的,并且在 V8 的下一个版本中会被更彻底地删除,但这仍然是需要考虑的事情。
此外,与重新启动 Redis 相比,您更有可能重新启动节点进程(以更新应用程序),从而丢失所有会话。