Cola de retraso usando la colección ordenada zset Redis
-- de Redis en acción
Cree la función addFutureJob, que es responsable de agregar tareas retrasadas al trabajo conjunto ordenado.
Los elementos almacenados en una colección ordenada se pueden guardar en formato json.
La estructura interna es similar a la siguiente:
Parámetros:
$job: El nombre de la colección ordenada que almacena las tareas retrasadas, llamado job p>
$queue: Cuando la tarea alcanza el tiempo de ejecución, se volcará a una cola específica para su ejecución
$fun: El nombre de la función o función anónima responsable de ejecutar la tarea
$time: el tiempo específico para retrasar la ejecución de la tarea
$parameter: los parámetros a pasar
Después de ejecutar el script, será almacenado en una colección de trabajos ordenados
En otro script, la colección de trabajos se leerá y verificará para ver si hay tareas que deban ejecutarse
El flujo básico de la función getQueue() es el siguiente. :
(1) Lea el primer elemento y ordénelo por puntuación de menor a mayor. Si el elemento no existe, devuelve false
(2) Si el elemento tarea existe y su puntuación (tiempo de ejecución) es menor o igual al tiempo actual, significa que la tarea está lista para su ejecución. .
(3) Convierta json en una matriz, lea los parámetros de la cola de la tarea, agréguelo a la cola especificada y luego elimine la tarea del trabajo.
(4) Si la operación de transferencia anterior tiene éxito, registre la operación y continúe verificando la tarea ordenada configurada en un bucle.
(5) Si la operación de transferencia falla, devuelva falso p>
(6) Si no hay tareas posteriores para ejecutar, detenga el ciclo y devuelva false
El ciclo también puede usar la función zrangeByScore() para leer, que lee de acuerdo con el rango de puntuación para Devuelve el elemento especificado dentro de la colección.