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

2jcobegt  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(304)

我想储存一些信息。在node.js数组变量(作为本地缓存)中,我的中间件将在进行数据库查询之前检查该变量。
我知道我可以用redis来实现这一点,这通常是首选的方法b/c redis提供快照来实现持久性,而且性能非常好,但是我无法想象有什么比存储在内存中的变量更高的性能了。
然而,每次有人提起这个主题,人们都会说“内存泄漏”会让这个想法变得糟糕。但为什么呢?为什么node.js不擅长管理服务器端变量?
是否有通过node.js管理服务器端阵列/缓存的首选方法(在外部k/v db存储区之外)?

pokxtpni

pokxtpni1#

使用节点变量作为存储的问题是,使用它会使应用程序无法扩展。考虑一个每秒处理数千个请求的大型应用程序,它不能在一台机器上运行。如果启动第二个节点进程,则它的节点存储变量值不同。
假设一个对应用程序进行api调用的用户点击machine1,并存储一个会话变量。它们进行第二次api调用,这一次由负载平衡器路由到机器2。找不到他们的会话变量,因此抛出错误。
如果您正在编写一个小型应用程序,并且不希望在短期内进行扩展,请务必使用node变量—我以前也为小型网站上的auth令牌这样做过。如果需要,您可以随时切换到redis。当然,您需要注意,如果节点进程重新启动,变量的内容将丢失。

相关问题