Node-redis: unref()、quit()、end()の違い

作成日 2015年02月11日  ·  6コメント  ·  ソース: NodeRedis/node-redis

タイトルが示すように、ドキュメントを読んだ後でも、 unref()quit() 、およびend()の違いが何であるかはわかりません。

  • どちらを使用する必要があり、どのユースケースで使用する必要がありますか?

end()は、すべてのソケットが閉じられるのを待たずに接続を閉じているようです。
unref()は、すべてのコマンドが終了するのを待っているようです。
quit()unref()似ているようです。

  • unref()はタイムアウトがないので、終了することが保証されていますか、それともタイムアウトを設定する必要がありますか?
  • endイベントは無条件に呼び出されますか?
question

最も参考になるコメント

end()は、 uncaughtExceptionハンドラーなど、今すぐアプリケーションを終了する場合に使用するように設計されており、送信したコマンドからの応答を予期したり、(もしあれば)待ちたくない場合に使用します。まだRedisから戻ってこない。

quit()は、この接続が完了し、接続を閉じたいが、未完了のアクティビティを完了できるようにするために設計されています。 ほとんどの場合、接続を終了しようとしている場合は、 quit()使用します

unref()は、これらのオプションと競合するように設計されてだけである場合にアプリケーションを終了できるようにするunrefと同じように動作しますhttp://nodejs.org/api/net.html#net_server_unref

全てのコメント6件

end()は、 uncaughtExceptionハンドラーなど、今すぐアプリケーションを終了する場合に使用するように設計されており、送信したコマンドからの応答を予期したり、(もしあれば)待ちたくない場合に使用します。まだRedisから戻ってこない。

quit()は、この接続が完了し、接続を閉じたいが、未完了のアクティビティを完了できるようにするために設計されています。 ほとんどの場合、接続を終了しようとしている場合は、 quit()使用します

unref()は、これらのオプションと競合するように設計されてだけである場合にアプリケーションを終了できるようにするunrefと同じように動作しますhttp://nodejs.org/api/net.html#net_server_unref

次に、 endイベントquit()明らかに

quitと呼ばないと、何が起こるかわかりません。

@techsin redis接続を閉じない場合、ノードアプリケーションはRedisサーバーに接続されたまま待機します。

アプリケーションが終了したが、redisサーバーがまだ稼働している場合はどうなりますか。 それはredisサーバーに参照を保持させますか? それは一種のメモリリークでしょうか

すみません、最初ははっきりしませんでした

いいえ、アプリケーションが閉じると、クライアント接続が終了し、Redisサーバーがその側で参照を終了するため、メモリリークは発生しません。

このページは役に立ちましたか?
0 / 5 - 0 評価