2016-12-04 4 views
2

서버 - 12 코어, 64GB RAM에서 nodejs를 사용하려고합니다.전역 개체 대 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를 저장할 수 있도록 않습니다를?
(OBJ의 지속성은 문제가되지 않습니다) (규모, 나는 5 개 요소 각각의 평균 ~ 30 만 키가 기대)

질문하십시오의 최대 힙 크기가 허용 무엇 nodejs 프로세스?

+0

nodejs 클러스터링을 사용하여 12 코어를 사용하려는 경우 redis를 사용하여 여러 클러스터 된 프로세스가 모두 데이터에 액세스 할 수 있습니다. redis 스토리지를 다른 프로세스로 이동하고 nodejs 프로세스에서 벗어나게되므로 redis를 사용하면 nodejs 메모리 사용에 도움이됩니다. – jfriend00

+0

주 서버 프로세스에서 cluster.fork()를 사용하면 fork 된 프로세스에서 전역 변수에 액세스 할 수 없습니까? – vjjj

+0

전역은 node.js 클러스터 된 프로세스간에 공유되거나 다른 프로세스와 공유되지 않습니다. – jfriend00

답변

5

여기 레디 스로 이동하는 몇 가지 이유가 있습니다 :

  1. 당신이 높은 부하를 처리하기 위해 멀티 코어를 활용하기 위해 Node.js를 프로세스를 클러스터하려는 경우

    . node.js의 전역 변수는 클러스터 된 프로세스간에 공유되지 않으므로 각 node.js 클러스터가 액세스 할 수있는 다른 프로세스 (redis)가 데이터를 관리해야합니다.

  2. node.js에서 많은 메모리 사용이 염려되는 경우 redis로 이동하면 node.js 프로세스에서 데이터에 사용 된 메모리가 이동합니다.

  3. 데이터 관리 또는 redis의 다른 기능을 원할 경우. this article

, 당신은 (26기가바이트 최대 1.76GB의 기본 메모리 캡)에서 꽤 멀리 Node.js를 허용 된 메모리 사용량을 전화를 걸 수 있습니다.