sql >> Base de Datos >  >> NoSQL >> Redis

¿La biblioteca de Redis contratada crea su propio subproceso para devoluciones de llamada asíncronas?

El cliente de Redis no crea subprocesos adicionales y funciona en subprocesos existentes.

Redis trabajó en otro proceso (principal). La API de redis que usa funcionó en su proceso local y usa la comunicación entre procesos para el proceso principal. La solicitud asincrónica significa que su proceso o subproceso puso una tarea en otro, y luego puede realizar cualquier otra tarea o evento de espera. Algún tiempo después, la respuesta asincrónica llegó a su aplicación y estuvo disponible para su uso. Su aplicación debe usar https://en.wikipedia.org/wiki/Event_loop o cualquier sistema de administración asíncrono que le notifique llamando a la devolución de llamada para manejar el evento (en este caso, redis respuesta).

La arquitectura asíncrona significa que está ejecutando un bucle de eventos que llama a los controladores de devolución de llamada para cada evento. Cuando se llama a la devolución de llamada, puede crear varias tareas asincrónicas. Una vez que se crea la tarea, se supone que cuando se realiza la tarea o se produce un error, se llamará al controlador de eventos de devolución de llamada. La devolución de llamada se puede asignar para iniciar la aplicación o para que aparezca una nueva conexión web. Cuando se llama a la devolución de llamada, puede crear la tarea redis y se llamará a la devolución de llamada del evento de resultado posterior. Todas las cosas en el hilo actual. Si tiene varios subprocesos, es razonable esperar que tenga un bucle de eventos por cada subproceso.

Naturaleza de subproceso único de Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis

El socket del cliente se coloca en un estado sin bloqueo, ya que Redis usa multiplexación y E/S sin bloqueo. http://redis.io/topics/clients Esto significa que su cliente nunca será bloqueado.

A partir de Redis 2.4, los subprocesos en Redis se usan solo para realizar algunas operaciones de E/S lentas en segundo plano, principalmente relacionadas con la E/S de disco, pero esto no cambia el hecho de que Redis atiende todas las solicitudes mediante un solo subproceso.