2016-12-04 88 views
2

我打算在服务器上使用nodejs - 12个内核,64 GB RAM。使用全局对象vs Redis(nodejs)

如果我有像这样的对象 -

obj= {x1: [user1_id, user2_id, user4_id, user89_id, user541_id], 
     x2: [user55_id, user44_id, user3_id, user89_id, user132_id], 
     .... } 

问题:在什么时候是有意义的OBJ存储在Redis的,而不是在一个全局对象? (在规模,我希望有万〜30万项,平均每5种元素)
(obj的持久性不是问题)

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

+0

如果您想要使用nodejs集群来使用12个内核,那么您将需要使用redis,因此多个集群进程都可以访问数据。使用redis也可以帮助你处理nodejs内存使用,因为你将redis存储移动到另一个进程并且离开nodejs进程。 – jfriend00

+0

如果我在主服务器进程中使用cluster.fork(),全局变量不能在分叉进程中访问吗? – vjjj

+0

全局变量不在node.js集群进程中共享,或者与其他任何进程共享。 – jfriend00

回答

5

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

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

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

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

this article,您可以拨打node.js的允许的内存使用量很远(从1.76GB的默认内存上限可达26GB)。