在Node.js中,为什么我更喜欢键值存储而不是应用程序变量?

Mar*_*jur 5 variables scaling key-value redis node.js

我正在Node.JS中开发一个Socket.IO支持的实时应用程序,在任何给定时刻将由几百个用户同时使用,我需要存储关于每个连接客户端的一些基本细节(并删除这些细节)客户断开连接).

我已经读过,使用键值存储(例如Redis)是存储此类数据的首选.

var connectedClientsData = {}与将数据存储在像Redis这样的键值存储中相比,为什么将数据存储在常规的应用内变量(对象,例如)中是不好的?

是否只支持扩展(例如,多个基于NodeJS的应用服务器可以连接到单个中央键值存储),还是有一些更严重的缺点?

Mat*_*ant 4

有几个问题在起作用:

1)是的,缩放。不仅可以连接到多个服务器,还可以通过“集群”(您可以在 npm 上找到)之类的方式连接到多个 CPU。

2) V8 目前由于其基于浏览器的传统而存在内存限制。它们在某种程度上是可以调整的,并且在 V8 的下一个版本中会被更彻底地删除,但这仍然是需要考虑的事情。

此外,与重新启动 Redis 相比,您更有可能重新启动节点进程(以更新应用程序),从而丢失所有会话。