使用全局对象vs Redis(nodejs)

vjj*_*jjj 3 javascript heap performance redis node.js

我打算在服务器上使用nodejs - 12个内核,64 GB RAM.

如果我有这样的物体 -

obj= {x1: [user1_id, user2_id, user4_id, user89_id, user541_id],
      x2: [user55_id, user44_id, user3_id, user89_id, user132_id],
      .... }
Run Code Online (Sandbox Code Playgroud)

问题:在obis中存储obj而不是在全局对象中存在什么意义?(按比例,我希望有大约300,000个密钥,每个密钥平均有5个元素)
(obj的持久性不是问题)

问题:nodejs进程的最大堆大小允许什么?

jfr*_*d00 6

以下是迁移到redis的一些原因:

  1. 如果要对node.js进程进行集群,以利用多个内核来处理高负载.node.js中的全局变量不在群集进程之间共享,因此您需要由每个node.js群集可以访问的另一个进程(redis)管理数据.

  2. 如果您担心node.js中的大内存使用.移至redis会将数据使用的内存移出node.js进程.

  3. 如果你想要一些数据管理或redis的其他功能.

根据这篇文章,您可以将node.js的允许内存使用量调到很远(从默认内存上限1.76GB到26GB).