Node.js:与redis(或其他内存中的键/值存储)相比,内存中的一个变量



我想存储一些信息。在node.js数组变量(作为本地缓存(中,我的中间件在进行数据库查询之前会检查该变量。

我知道我可以使用redis来实现这一点,而且它通常是b/c redis提供持久性快照的首选方法,并且性能很高,但我无法想象有什么比存储在内存中的变量更高的性能了。

然而,每当有人提起这个话题时,人们都会说"内存泄漏";让这成为一个坏主意。但为什么呢?为什么node.js不善于管理服务器端变量?

是否有通过node.js管理服务器端数组/缓存的首选方法(在外部k/v数据库存储之外(?

使用节点变量作为存储的问题是,使用它会使应用程序无法扩展。考虑一个每秒处理数千个请求的大型应用程序,它不能在一台机器上运行。如果您启动第二个节点进程,它会为您的节点存储变量提供不同的值。

比方说,对应用程序进行API调用的用户访问机器1,并存储会话变量。它们进行第二次API调用,这一次由负载平衡器路由到机器2。找不到他们的会话变量,您抛出了一个错误。

如果您正在编写一个小型应用程序,并且不希望在短期内扩大规模,请使用节点变量——我以前在小型网站上为auth令牌自己做过这件事。如果需要,您可以稍后切换到redis。当然,您需要注意,如果节点进程重新启动,变量的内容将丢失。

相关内容

最新更新