Node-redis: Différence entre unref (), quit () et end ()

Créé le 11 févr. 2015  ·  6Commentaires  ·  Source: NodeRedis/node-redis

Comme le titre l'indique, même après avoir lu la documentation, je ne sais pas quelle est la différence entre unref() , quit() et end() .

  • Lequel dois-je utiliser et dans quel cas d'utilisation?

end() semble fermer une connexion sans attendre que toutes les sockets soient fermées.
unref() semble attendre la fin de toutes les commandes.
quit() semble être similaire à unref() .

  • Puisque unref() n'a pas de délai d'expiration, est-il garanti qu'il se termine ou dois-je définir un délai d'expiration?
  • L'événement end appelé sans condition depuis lequel j'ai appelé?
question

Commentaire le plus utile

end() est conçu pour être utilisé lorsque vous terminez l'application MAINTENANT, par exemple un gestionnaire uncaughtException , et n'anticipez pas ou ne voulez pas attendre (le cas échéant) les réponses des commandes que vous avez envoyées qui ne sont pas encore revenus de Redis.

quit() est conçu pour lorsque vous avez terminé avec cette connexion et que vous souhaitez la fermer, mais laissez l'activité inachevée se terminer. Dans la plupart des cas, si vous essayez de mettre fin à la connexion, utilisez quit()

unref() n'est pas conçu pour concurrencer ces options, mais simplement pour permettre à votre application de se fermer si la seule chose asynchrone restante est le client Redis. C'est généralement le cas pour une sorte de script où vous effectuez une requête par lots ou un test qui se connecte à Redis. Il se comporte de la même manière que le unref ici http://nodejs.org/api/net.html#net_server_unref

Tous les 6 commentaires

end() est conçu pour être utilisé lorsque vous terminez l'application MAINTENANT, par exemple un gestionnaire uncaughtException , et n'anticipez pas ou ne voulez pas attendre (le cas échéant) les réponses des commandes que vous avez envoyées qui ne sont pas encore revenus de Redis.

quit() est conçu pour lorsque vous avez terminé avec cette connexion et que vous souhaitez la fermer, mais laissez l'activité inachevée se terminer. Dans la plupart des cas, si vous essayez de mettre fin à la connexion, utilisez quit()

unref() n'est pas conçu pour concurrencer ces options, mais simplement pour permettre à votre application de se fermer si la seule chose asynchrone restante est le client Redis. C'est généralement le cas pour une sorte de script où vous effectuez une requête par lots ou un test qui se connecte à Redis. Il se comporte de la même manière que le unref ici http://nodejs.org/api/net.html#net_server_unref

Ensuite, l'événement end n'est émis que lorsque vous appelez quit() apparemment. Je ne sais pas exactement pourquoi sans recherche.

si vous n'appelez pas, ce qui se passe.

@techsin Si vous ne fermez jamais la connexion redis, votre application de nœud restera connectée au serveur Redis et attendra pour toujours.

que se passe-t-il si l'application s'est fermée, mais que le serveur Redis est toujours en marche. cela ferait-il référence au serveur Redis? Serait-ce une sorte de fuite de mémoire

désolé je n'ai pas été clair la première fois

Non, si l'application se ferme, elle mettra fin à la connexion client et le serveur Redis mettra fin à la référence de son côté, donc pas de fuite de mémoire.

Cette page vous a été utile?
0 / 5 - 0 notes