Node-redis: Diferença entre unref (), quit () e end ()

Criado em 11 fev. 2015  ·  6Comentários  ·  Fonte: NodeRedis/node-redis

Como o título indica, mesmo depois de ler a documentação, não está claro para mim qual é a diferença entre unref() , quit() e end() .

  • Qual devo usar e em qual caso de uso?

end() parece fechar uma conexão sem esperar que todos os soquetes sejam fechados.
unref() parece esperar que todos os comandos terminem.
quit() parece ser semelhante a unref() .

  • Como unref() não tem um tempo limite, é garantido que ele terminará ou devo definir um tempo limite?
  • O evento end chamado incondicionalmente daquele que eu chamei?
question

Comentários muito úteis

end() é projetado para uso onde você está encerrando o aplicativo AGORA, por exemplo, um manipulador uncaughtException , e não antecipa ou deseja esperar (se houver) respostas de comandos que você pode ter enviado que ainda não voltaram do Redis.

quit() foi projetado para quando você terminar com esta conexão e quiser fechá-la, mas permitir que a atividade inacabada seja concluída. Na maioria dos casos, se você estiver tentando encerrar a conexão, use quit()

unref() não foi projetado para competir com essas opções, mas simplesmente para permitir que seu aplicativo seja encerrado se a única coisa assíncrona restante for o cliente Redis. Normalmente, esse é o caso de algum tipo de script em que você faz uma consulta em lote ou um teste que se conecta ao Redis. Ele se comporta de forma idêntica ao unref aqui http://nodejs.org/api/net.html#net_server_unref

Todos 6 comentários

end() é projetado para uso onde você está encerrando o aplicativo AGORA, por exemplo, um manipulador uncaughtException , e não antecipa ou deseja esperar (se houver) respostas de comandos que você pode ter enviado que ainda não voltaram do Redis.

quit() foi projetado para quando você terminar com esta conexão e quiser fechá-la, mas permitir que a atividade inacabada seja concluída. Na maioria dos casos, se você estiver tentando encerrar a conexão, use quit()

unref() não foi projetado para competir com essas opções, mas simplesmente para permitir que seu aplicativo seja encerrado se a única coisa assíncrona restante for o cliente Redis. Normalmente, esse é o caso de algum tipo de script em que você faz uma consulta em lote ou um teste que se conecta ao Redis. Ele se comporta de forma idêntica ao unref aqui http://nodejs.org/api/net.html#net_server_unref

Então o evento end só é emitido quando você chama quit() aparentemente. Não sei exatamente por que sem pesquisa.

se você não parar, nunca o que acontecer.

@techsin Se você nunca fechar a conexão do Redis, seu aplicativo de nó ficará sentado e aguardará para sempre conectado ao servidor Redis.

e se o aplicativo foi encerrado, mas o servidor redis ainda está ativo. isso faria o servidor redis manter a referência? seria uma espécie de vazamento de memória

desculpe, eu não estava claro na primeira vez

Não, se o aplicativo for fechado, ele encerrará a conexão do cliente e o servidor Redis encerrará a referência em seu lado, sem vazamento de memória.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

lemon707 picture lemon707  ·  3Comentários

adamgajzlerowicz picture adamgajzlerowicz  ·  4Comentários

twappworld picture twappworld  ·  7Comentários

abhaygarg picture abhaygarg  ·  5Comentários

strumwolf picture strumwolf  ·  4Comentários