Node-redis: Unterschied zwischen unref (), quit () und end ()

Erstellt am 11. Feb. 2015  ·  6Kommentare  ·  Quelle: NodeRedis/node-redis

Wie der Titel schon sagt, ist mir selbst nach dem Lesen der Dokumentation nicht klar, was der Unterschied zwischen unref() , quit() und end() .

  • Welches soll ich verwenden und in welchem ​​Anwendungsfall?

end() scheint eine Verbindung zu schließen, ohne darauf zu warten, dass alle Sockets geschlossen werden.
unref() scheint darauf zu warten, dass alle Befehle beendet werden.
quit() scheint unref() ähnlich zu sein.

  • Da unref() keine Zeitüberschreitung hat, wird diese garantiert beendet oder sollte ich eine Zeitüberschreitung festlegen?
  • Wird das end -Ereignis bedingungslos aufgerufen, von welchem ​​ich angerufen habe?
question

Hilfreichster Kommentar

end() ist für die Verwendung vorgesehen, bei der Sie die Anwendung JETZT beenden, z. B. einen uncaughtException -Handler, und nicht auf (falls vorhanden) Antworten von Befehlen warten, die Sie möglicherweise gesendet haben die sind noch nicht von Redis zurückgekommen.

quit() entwickelt, wenn Sie mit dieser Verbindung fertig sind und sie schließen möchten, aber die unvollendete Aktivität abschließen möchten. In den meisten Fällen, wenn Sie versuchen, die Verbindung zu beenden, verwenden Sie quit()

unref() nicht entwickelt, um mit diesen Optionen zu konkurrieren, sondern um einfach zu ermöglichen, dass Ihre Anwendung beendet wird, wenn nur noch der Redis-Client asynchron ist. Dies ist normalerweise bei einer Art Skript der Fall, bei dem Sie eine Stapelabfrage oder einen Test durchführen, der eine Verbindung zu Redis herstellt. Es verhält sich identisch mit dem unref hier http://nodejs.org/api/net.html#net_server_unref

Alle 6 Kommentare

end() ist für die Verwendung vorgesehen, bei der Sie die Anwendung JETZT beenden, z. B. einen uncaughtException -Handler, und nicht auf (falls vorhanden) Antworten von Befehlen warten, die Sie möglicherweise gesendet haben die sind noch nicht von Redis zurückgekommen.

quit() entwickelt, wenn Sie mit dieser Verbindung fertig sind und sie schließen möchten, aber die unvollendete Aktivität abschließen möchten. In den meisten Fällen, wenn Sie versuchen, die Verbindung zu beenden, verwenden Sie quit()

unref() nicht entwickelt, um mit diesen Optionen zu konkurrieren, sondern um einfach zu ermöglichen, dass Ihre Anwendung beendet wird, wenn nur noch der Redis-Client asynchron ist. Dies ist normalerweise bei einer Art Skript der Fall, bei dem Sie eine Stapelabfrage oder einen Test durchführen, der eine Verbindung zu Redis herstellt. Es verhält sich identisch mit dem unref hier http://nodejs.org/api/net.html#net_server_unref

Dann wird das Ereignis end nur ausgegeben, wenn Sie anscheinend quit() aufrufen. Ich weiß nicht genau warum ohne Forschung.

Wenn Sie nie aufhören, was passiert.

@techsin Wenn Sie die Redis-Verbindung nie schließen, wird Ihre Knotenanwendung warten und für immer mit dem Redis-Server verbunden sein.

Was ist, wenn die Anwendung geschlossen wurde, der Redis-Server jedoch noch aktiv ist? Würde das dazu führen, dass der Redis-Server eine Referenz enthält? Wäre das eine Art Speicherverlust?

Entschuldigung, ich war beim ersten Mal nicht klar

Nein, wenn die Anwendung geschlossen wird, wird die Clientverbindung beendet und der Redis-Server beendet die Referenz auf seiner Seite, sodass kein Speicherverlust auftritt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

jackycchen picture jackycchen  ·  4Kommentare

dotSlashLu picture dotSlashLu  ·  5Kommentare

aletorrado picture aletorrado  ·  6Kommentare

b96705008 picture b96705008  ·  7Kommentare

michaelwittig picture michaelwittig  ·  3Kommentare