2016-12-04 92 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)。