Redis BRPOP

Redis BRPOP
La lista es un tipo de datos Redis popular que almacena una secuencia de cadenas basada en el orden de inserción. Una lista puede tener más de 4 mil millones de elementos. El hecho único sobre la lista Redis es que mantiene las propiedades de la cabeza y la cola donde los elementos se pueden insertar desde ambos lados. Por lo general, el Lpush y Rpush Los comandos se utilizan para insertar los elementos en una lista. Mientras tanto, la nueva lista se crea con la clave especificada. Todos los comandos de la lista se comportan de la misma manera que se crea una nueva lista cuando se pasa con una clave no existente.


Además, cuando todos los elementos se extraen de la lista, la clave asociada se eliminará del espacio de la tecla Redis. Redis List es el candidato ideal para las aplicaciones de baja latencia porque las operaciones de inserción y deleción tienen una complejidad de tiempo constante en el CABEZA y COLA. No importa si hay cinco o mil elementos en la lista. El tiempo para la inserción y la eliminación lleva un tiempo constante cerca de los extremos izquierdo y derecho.

Hay algunas necesidades prácticas para eliminar los elementos de la cola o la cabeza de una lista determinada. El Brpop y Bolsera Los comandos se introducen desde la versión 2 de Redis.0.0 para cumplir con el requisito mencionado. El Brpop El comando se evalúa en esta guía.

El comando brpop

El Brpop es la versión avanzada del RPOP dominio. El RPOP El comando saca un elemento desde la cola de la lista que se almacena en una clave determinada. Como su nombre indica, el comando BRPOP es la versión de bloqueo del RPOP. Cuando la clave no existe, el comando BRPOP no volverá con el nulo valor de inmediato como en el comando rpop. En su lugar, espera hasta que se cree una nueva lista en esa clave. Tras la creación de una nueva lista en la clave mencionada, el comando BRPOP aparece el elemento de cola. Además, este comando acepta las múltiples teclas y solo explota los elementos de la primera clave no vacía.

Sintaxis:

La siguiente es la sintaxis para el comando BRPOP:

Brpop list_key [list_key ...] Tiempo de espera


list_key: Esta es la clave de la lista.
se acabó el tiempo: Este es el valor de tiempo de espera en segundos donde el cliente está bloqueado hasta que llega este tiempo de espera.

Por lo general, el comando BRPOP devuelve una salida de matriz:

Si se especifica una lista no vacía, el comando devuelve el valor del elemento popped y la clave de la lista de contenido como en el siguiente formato:

1) "Carlista"
2) "Benz"

Cuando ningún elemento único se va a aparecer desde cualquiera de las listas especificadas y el tiempo de espera ha expirado, el nulo el valor se devuelve.

(nulo)
(10.46s)

Ejemplo: Manipulación de la lista de reproducción de la estación de radio con BRPOP

Supongamos que una estación de radio necesita reproducir canciones de una lista de reproducción diaria. La lista de reproducción contiene las identificaciones de la canción para tocar. Las canciones deben ordenarse en la orden de inserción. Cada canción es elegida desde el final de la lista de reproducción para tocar.

Podemos usar la estructura de datos de la lista Redis para implementar la lista de reproducción mencionada y las operaciones de la lista para manipular las canciones de la lista de reproducción. Creemos una lista de reproducción llamada MidnightPlayList y agregue algunas identificaciones de canciones como se muestra en lo siguiente. El Lpush El comando se usa para eso:

lpush MidnightPlayList Song001 Song004 Song010 Song100 Song101


Esto crearía una lista como se muestra en la siguiente:

Cabeza -> Song101 | Song100 | Song010 | Song004 | Song001 <- tail


Comportamiento sin bloqueo del comando BRPOP

Ahora es el momento de comenzar un espectáculo. Deberíamos elegir algunas canciones del final de la lista de reproducción. Por eso, Song001 debe ser retirado de la lista de reproducción y debe ser jugado por la grabadora. Usamos el comando BRPOP para hacer estallar el Song001 de la lista de reproducción y para llevar la identificación de la canción al oyente del cliente.

Brpop MidnightPlayList 5


El argumento del tiempo de espera se especifica como cinco segundos. Desde el MidnightPlaylist contiene elementos, el Brpop el comando se comporta de una manera no bloqueada. Por lo tanto, aparece y devuelve el elemento de cola al cliente.

Comportamiento de bloqueo del comando BRPOP

Los resultados anteriores también se pueden lograr a través del comando RPOP. Por lo tanto, veamos la ventaja real del comando BRPOP con el comportamiento de bloqueo. Eliminemos todos los elementos del MidnightPlayList clave usando el comando rpop.

RPOP MidnightPlayList 4


Esto elimina todos los elementos restantes de la lista y el MidnightPlaylist La tecla también se elimina del espacio de la tecla Redis.

Ejecutemos el comando BRPOP con tiempo de espera de 60 segundos y la clave no existente MidnightPlayList. Ahora, el comando se comporta de manera bloqueadora. Espera a que se cree la clave y el elemento que esté presente en la lista de reproducción MidnightPlayList.


Empujemos un elemento a MidnightPlayList a través de otra ventana de terminal que está conectado al mismo almacén de datos Redis.

lpush MidnightPlayList Song400


Sobre la creación del MidnightPlaylist Lista con el elemento Song400, La ventana del cliente que ejecutó el comando BRPOP explota el elemento Song400 de la lista de reproducción y devuelve la identificación de la canción como salida al instante.


Elige una canción de múltiples listas de reproducción

Puede haber múltiples listas de reproducción creadas por la estación de radio. Por lo tanto, debemos elegir una canción de las listas de reproducción dadas en un momento determinado. Supongamos que tenemos tres listas de reproducción: MidnightPlayList1, MidnightPlayList2, y MidnightPlayList3. El MidnightPlayList1 ya está vacío, mientras que las otras dos listas de reproducción no están vacías.

lpush MidnightPlayList2 Song1002 Song1005
lpush MidnightPlayList3 Song3000


Llamemos al comando BRPOP con las tres teclas como se muestra en lo siguiente:

Brpop MidnightPlayList1 MidnightPlayList2 MidnightPlayList3 10


Desde la primera clave MidnightPlayList1 está vacío, es ignorado por el comando aquí. Verifica la primera clave no vacía en la lista de claves disponibles. Por lo tanto, el comando localiza el MidnightPlayList2 Como la primera clave no vacía del orden de las claves. Como se esperaba, el Song1002 se elimina del MidnightPlayList2.


El comando BRPOP tiene una complejidad de tiempo constante cerca de la cabeza y la cola cuando se especifica una sola clave. La complejidad del tiempo se convierte en o (n) cuando se especifican múltiples claves en el comando. Además, este comando es muy eficiente de usar en las aplicaciones de baja latencia, como una cola, pila, cronograma en las redes sociales, etc.

Conclusión

Para resumir, una lista de Redis es una colección de elementos de cadena almacenados en una clave determinada mientras se clasifica en el orden de inserción. Hay varios comandos disponibles para operar en las listas de Redis con complejidad de tiempo constante cerca de la cabeza y la cola. Como se indicó, el comando BRPOP se usa para eliminar los elementos del lado derecho de la lista Redis almacenada en una clave determinada con el soporte de bloqueo. El comando BRPOP bloquea la conexión del cliente cuando no hay elementos disponibles para eliminar de las listas especificadas. Como saben, este comando acepta múltiples claves donde aparece un elemento de la primera lista no vacía donde cada clave se verifica en el orden en que se pasa al comando.