Redis rpoplpush

Redis rpoplpush
"Redis tiene varios tipos de datos incorporados, y cada uno es para diferentes fines. La lista es uno de los tipos de datos ampliamente utilizados que pueden almacenar más de 4 mil millones de cuerdas en una clave Redis específica. Lo especial de la lista de Redis es que permite la inserción y eliminación de elementos de la cabeza y la cola, que tiene complejidad de tiempo constante. El Lpush y Rpush se utilizan para insertar elementos de cadena cerca de la cabeza y la cola de una lista. También el LPOP y RPOP Elimine los elementos de la lista en la cabeza y la cola."

El comando rpoplpush

El comando RPOPLPUSH se usa para emitir un elemento desde la cola de una lista de origen e inserte en el cabezal de una lista de destino almacenada en una clave dada. Tanto la eliminación como la inserción en las listas de origen y de destino ocurren simultáneamente.

Supongamos que una lista almacenada en la clave A contiene las cuerdas "manzana", "naranja" y "plátano". Además, otra lista almacenada en la clave B tiene los elementos "uvas" y "aguacate". Si llamamos al comando RPOPLPUSH donde la lista A es la fuente y la lista B es el destino, eliminará la cadena "Banana" de la lista A e insértelo justo antes del elemento "uvas" en la lista B.

Sintaxis

El comando RPOPLPUSH tiene la siguiente sintaxis.

RPOPLPUSH Source_list_key Destination_list_key

Fuente_list_key: Esta es la clave redis de la lista que necesita para eliminar un elemento.

destino_list_key: Esta es la tecla Redis de la lista que necesita para insertar el elemento estampado.

Este comando devuelve una respuesta de cadena que es un elemento de lista popped de la lista de origen si la lista de origen está disponible. Cuando la lista de origen no existe, el comando regresará un nulo valor. En algunos casos, la fuente y el destino pueden ser los mismos. Por lo tanto, realizará tanto la inserción como la eliminación en la misma lista.

Caso de uso 01 - Implementación de la cola de mensajería

Las listas de Redis se han utilizado principalmente en implementaciones de servidores de mensajería donde los productores producen datos cerca del jefe de la lista, y los consumidores consumen datos de la cola de la lista almacenada en una clave especificada. Piense en una situación en la que se lanza una falla de red o un problema de servidor; El consumidor podría perder los datos recopilados antes de que comience el procesamiento. Puede ser una pérdida que los consumidores no puedan recuperarse en su vida. Por lo tanto, se necesita una cola más confiable. Hagamos uso del comando RPOPLPUSH para implementar una cola de confiabilidad.

Creemos una lista Lista de procesos con algunos elementos, como se muestra en el siguiente. El comando LPUSH se puede usar para producir algunos datos en la lista especificada.

LPUSH ProcessList "P1" "P2" "P3" "P4"

El comando anterior presionará elementos cerca del cabezal de la lista. Por lo tanto, los elementos se almacenarán en el siguiente orden.

"P4" | "P3" | "P2" | "P1"

A continuación, usaremos el Rpoplpush Comando como cliente para que explique el último elemento de la lista de procesos de la lista y lo presione en una nueva lista almacenada en la clave Confiabilidad.

RPOPLPUSH ProcessList RiabilityQueue

Idealmente, el elemento "P1" debe aparecer desde la lista de origen, y la cadena "P1" debería ser la salida de este comando. Al mismo tiempo, este elemento se empuja a la lista almacenada en la tecla Confiabilidad. Inspeccionemoslo usando el Lío dominio.

LRANGE CONFIABILICIÓNQUIE 0 5

Producción:

Llamaremos al Lío comando en la lista Lista de procesos también.

LRANGE ProcessList 0 5

Producción:

Como se esperaba, el elemento "P1" se elimina de la lista de origen. El Rpoplpush Se recomienda usar el comando con colas de confiabilidad.

Caso de uso 02 - Implementación de nodos trabajadores confiables para procesar aplicaciones individuales

Como se mencionó, la fuente y el destino pueden ser los mismos para el comando rpoplpush. En este caso, la inserción y la eliminación se realizan en la misma lista. Esto puede ser útil al implementar un sistema de monitoreo para procesar cientos de solicitudes de entrevistas para un trabajo determinado.

Múltiples trabajadores e iterar en la lista hasta que se hayan procesado todas las aplicaciones. Lo mejor de este tipo de cola circular es que no perderá ninguna aplicación debido a que el elemento se reinserta en la misma lista y finalmente recibe uno de los trabajadores en la próxima iteración.

Creemos una nueva lista, JobApplicationList.

Lpush JobApplicationList CV1 CV3 CV7 CV10

La lista debe parecer la siguiente.

"CV10" | "CV7" | "CV3" | "CV1"

Ahora llamemos al comando RPOPLPUSH con la misma lista que los argumentos de origen y destino que se muestran en los siguientes.

rpoplpush JobApplicationList JobApplicationList

Como se esperaba, el elemento de cola "CV1" ha sido eliminado y devuelto por el comando.

Podemos inspeccionar el JobApplicationList Lista nuevamente para verificar si el elemento "CV1" se ha insertado cerca del cabezal de la misma lista.

Lrange JobApplicationList 0 5

Como puede ver, el elemento "CV1" se ha insertado desde el cabezal de la lista almacenada en la tecla JobApplicationList. La lista circular se puede utilizar como una forma confiable de implementar sistemas de monitoreo como este.

Conclusión

Para resumir, el comando RPOPLPUSH es uno de los comandos ampliamente utilizados que se ha utilizado para realizar la eliminación y la inserción de las listas simultáneamente. Como saben, este comando acepta listas de origen y destino como argumentos. El elemento de cola de la lista de origen se colocará e insertará cerca del cabezal de la lista de destino almacenada en una clave especificada. Como se discutió, el comando RPOPLPUSH se utiliza para implementar colas confiables en los sistemas de mensajería y también en sistemas de monitoreo donde múltiples nodos de trabajadores funcionan en la lista dada de elementos paralelos de una manera confiable con recuperación perdida equipada. Este comando está en desuso de la versión 6 de Redis.2.0 y alentado a usar el lmove comando con el BIEN y IZQUIERDA argumentos.