2013-10-11 1 views
3

나는 redisConnection.js이라는 이름의 redis 클라이언트 모듈을 만들었습니다. 나는 레디 스 난 그냥 require 모듈의 사용을 얻고 exposeConnection 메소드를 호출 할 때마다 이제이것이 재발급 클라이언트를 재사용하는 올바른 방법입니까?

var redis = require('redis').createClient(); 

exports.exposeConnection = function(){ 

return redis; 

}; 

을 다음과 같이의 내용이다. 연결을 다시 사용하는 것이 올바른지 알고 싶었습니다. 내가 모듈을 호출 할 때마다 redis 연결이 한 번만 인스턴스화되기를 바라고 있습니다. 그렇지 않다면 더 좋은 방법은 그것을 재사용?

+1

"* right *"인지 여부는 실제로 알 수 없습니다. 그러나 노드는 [파일 경로에 따라] [캐시 모듈] (http://nodejs.org/api/modules.html#modules_caching)을 기반으로합니다 (http://nodejs.org/api/modules.html#modules_module_caching_caveats). 따라서,'redisConnection.js' 파일을 여러 개 가지지 않는 한 모든 require() 중 하나의 연결 만 만들어야합니다. –

+0

@JonathanLonowski 감사합니다. 모듈 캐싱은 내가 찾고 있던 것이었다. 답변을 추가 할 수 있습니까? –

+1

이 질문에 대한 답변을 아니지만 응용 프로그램을 통해 해당 클라이언트가 액세스 할 수있는 방법 중 하나가 될 수 있습니다 - 'var redis = require ('redis'); GLOBAL._REDISCLIENT = redis.createClient (포트, 서버); ' – Pranav

답변

4

내가하는 것과 거의 비슷합니다 (이전 앱에서했던 것).

대신 함수를 통해 노출의 난 그냥 이런 짓을 했을까 있지만

:
module.exports = require('redis').createClient(); 

그래서 나중에 그냥 redis = require('./local-redis') 대신 redis = require('./local-redis').exposeConnection() 할 수 있습니다.

이것은 매우 간단하지만 안정적인 아키텍처입니다.

+0

답변 해 주셔서 감사합니다 :) 나는이 질문에 대해 거의 포기했습니다. –

관련 문제