Node-redis: Diferencia entre unref (), quit () y end ()

Creado en 11 feb. 2015  ·  6Comentarios  ·  Fuente: NodeRedis/node-redis

Como indica el título, incluso después de leer la documentación, no me queda claro cuál es la diferencia entre unref() , quit() y end() .

  • ¿Cuál debería usar y en qué caso de uso?

end() parece cerrar una conexión sin esperar a que se cierren todos los sockets.
unref() parece esperar a que finalicen todos los comandos.
quit() parece ser similar a unref() .

  • Dado que unref() no tiene un tiempo de espera, ¿se garantiza que finalizará o debo establecer un tiempo de espera?
  • ¿El evento end llamado incondicionalmente desde cuál llamé?
question

Comentario más útil

end() está diseñado para usarse cuando está terminando la aplicación AHORA, por ejemplo, un controlador uncaughtException , y no anticipa ni desea esperar (si las hay) respuestas de los comandos que puede haber enviado que aún no han regresado de Redis.

quit() está diseñado para cuando haya terminado con esta conexión y desee cerrarla, pero permita que se complete la actividad inacabada. En la mayoría de los casos, si está intentando finalizar la conexión, utilice quit()

unref() no está diseñado para competir con estas opciones, sino simplemente para permitir que su aplicación salga si lo único asincrónico que queda es el cliente de Redis. Este suele ser el caso de algún tipo de script en el que realiza una consulta por lotes o una prueba que se conecta a Redis. Se comporta de manera idéntica al unref aquí http://nodejs.org/api/net.html#net_server_unref

Todos 6 comentarios

end() está diseñado para usarse cuando está terminando la aplicación AHORA, por ejemplo, un controlador uncaughtException , y no anticipa ni desea esperar (si las hay) respuestas de los comandos que puede haber enviado que aún no han regresado de Redis.

quit() está diseñado para cuando haya terminado con esta conexión y desee cerrarla, pero permita que se complete la actividad inacabada. En la mayoría de los casos, si está intentando finalizar la conexión, utilice quit()

unref() no está diseñado para competir con estas opciones, sino simplemente para permitir que su aplicación salga si lo único asincrónico que queda es el cliente de Redis. Este suele ser el caso de algún tipo de script en el que realiza una consulta por lotes o una prueba que se conecta a Redis. Se comporta de manera idéntica al unref aquí http://nodejs.org/api/net.html#net_server_unref

Entonces, el evento end solo se emite cuando llamas a quit() aparentemente. No sé exactamente por qué sin investigación.

si no llamas, deja de pasar lo que pase.

@techsin Si nunca cierra la conexión de Redis, su aplicación de nodo se quedará y esperará para siempre conectada al servidor de Redis.

¿Qué pasa si la aplicación se ha cerrado, pero el servidor Redis aún está activo? ¿Eso haría que el servidor redis mantenga una referencia? ¿Sería una especie de pérdida de memoria?

lo siento, no estaba claro la primera vez

No, si la aplicación se cierra, terminará la conexión del cliente y el servidor de Redis terminará la referencia de su lado, por lo que no habrá pérdida de memoria.

¿Fue útil esta página
0 / 5 - 0 calificaciones