Wie der Titel schon sagt, ist mir selbst nach dem Lesen der Dokumentation nicht klar, was der Unterschied zwischen unref()
, quit()
und end()
.
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.
unref()
keine Zeitüberschreitung hat, wird diese garantiert beendet oder sollte ich eine Zeitüberschreitung festlegen?end
-Ereignis bedingungslos aufgerufen, von welchem ich angerufen habe?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.
Hilfreichster Kommentar
end()
ist für die Verwendung vorgesehen, bei der Sie die Anwendung JETZT beenden, z. B. einenuncaughtException
-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 Siequit()
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 demunref
hier http://nodejs.org/api/net.html#net_server_unref