Saltar al contenido

Cómo administrar listas en Redis

marzo 4, 2020

 

Introducción

Redis es un código abierto, almacén de datos clave-valor en memoria. En Redis, una lista es una colección de cadenas ordenados por orden de inserción, de forma similar a la lista de s vinculado. En este tutorial se explica cómo crear y trabajar con los elementos en la lista Redis s.

Cómo utilizar esta guía

Esta guía está escrita como una hoja de trucos con ejemplos autónomos. Le animamos a saltar a cualquier sección que es relevante para la tarea que está tratando de completar.

Los comandos mostrados en esta guía fueron probados en un 18,04 servidor Ubuntu corriendo Redis versión 4.0.9. Para configurar un entorno similar, puede seguir Paso 1 de nuestra guía sobre cómo instalar y Secure Redis en Ubuntu 18.04. Vamos a demostrar cómo se comportan estos comandos ejecutando con Redis-cli, la interfaz de línea de comandos Redis. Tenga en cuenta que si usted está utilizando una interfaz diferente Redis – Redli, por ejemplo – la salida exacta de ciertos comandos pueden ser diferentes.

Como alternativa, puede aprovisionar una base de datos gestionada ejemplo Redis para probar estos comandos, pero tenga en cuenta que, dependiendo del nivel de control que le indique su proveedor de base de datos, algunos comandos de esta guía puede no w o k como se describe. Para aprovisionar una base de datos digitalocean administrados, siga nuestra documentación del producto Gestionados bases de datos. Entonces, se debe ya sea instalar Redli o establecieron un túnel TLS en o der para conectarse a la base de datos gestionada a través de TLS.

Creación de listas

una clave sólo puede contener una lista, a pesar de cualquier lista puede contener más de cuatro mil millones de elementos. Redis lee las listas de izquierda a derecha, y se pueden añadir nuevos elementos de la lista a la cabeza de una lista (el extremo “izquierda”) con el comando lpush o la cola (el extremo “derecho”) con rpush. También puede utilizar lpush o rpush para crear una nueva lista: comandos de valor clave

lpush key value

  • lpush

Tanto dará salida a un entero mostrando cuántos elementos están en la lista. Para ilustrar, ejecute los siguientes comandos para crear una lista que contiene el dicho “Pienso, luego existo”:

lpush key_philosophy1 "therefore"
lpush key_philosophy1 "think"
rpush key_philosophy1 "I"
lpush key_philosophy1 "I"
rpush key_philosophy1 "am"

  • key_philosophy1 lpush “por lo tanto”
  • lpush key_philosophy1 “pensar”
  • rpush key_philosophy1 “I”
  • lpush key_philosophy1 ” I “
  • rpush key_philosophy1 “am”

la salida del último comando leerá:

Output(integer) 5

Tenga en cuenta que puede agregar varios elementos de la lista con un solo lpush o declaración rpush:

rpush key_philosophy1 "-" "Rene" "Decartes"

  • rpush key_philosophy1 “-“” René” ‘Descartes’

los lpushx y rpushx comandos también se utilizan para añadir elementos a las listas, pero sólo funcionará si la lista dada ya existe. Si bien comando falla, devolverá (entero) 0:

rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle"

  • rpushx key_philosophy2 “La felicidad” “es” “” “el más alto” “bueno” “-” “Aristóteles”

Output(integer) 0

Para cambiar un elemento existente en una lista, ejecute el comando LSET seguido por el nombre de la clave, el índice del elemento que desea cambiar, y el nuevo valor:

lset key_philosophy1 5 "sayeth"

  • LSET key_philosophy1 5 “sayeth”

Si intenta añadir un elemento de la lista a una clave que no contiene una lista existente, que dará lugar a un enfrentamiento en los tipos de datos y devolver un error. Por ejemplo, el siguiente comando conjunto crea una clave que sostiene una cadena, por lo que el siguiente intento de añadir un elemento de la lista a ella con lpush fallará: “¿Qué es el amor”

set key_philosophy3 "What is love?"
lpush key_philosophy3 "Baby don't hurt me"

  • conjunto key_philosophy3
  • lpush key_philosophy3 “El bebé no me duele”

Output(error) WRONGTYPE Operation against a key holding the wrong kind of value

No es posible convertir claves Redis de un tipo de datos a otro, por lo que a su vez key_philosophy3 en una lista que se necesita para eliminar la clave y empezar de nuevo con un lpush o rpush comando.

Recuperación de elementos de una lista

Para recuperar una gama de elementos de una lista, utilice el comando lrange seguido de un comienzo compensado y una parada compensado . Cada compensado es un índice basado en cero, lo que significa que 0 representa el primer elemento de la lista, 1 representa la siguiente, y así sucesivamente.

El siguiente comando devolverá todos los elementos de la lista de ejemplo creada en la sección anterior:

lrange key_philosophy1 0 7

  • lrange key_philosophy1 0 7

Output1) "I"
2) "think"
3) "therefore"
4) "I"
5) "am"
6) "sayeth"
7) "Rene"
8) "Decartes"

Los desplazamientos pasados ​​a lrange también pueden ser números negativos. Cuando se utiliza en este caso, -1 representa el elemento final de la lista, -2 representa el segundo al último elemento de la lista, y así sucesivamente. El ejemplo siguiente devuelve los tres últimos elementos de la lista, celebrada en key_philosophy1:

lrange key_philosophy1 -3 -1

  • lrange key_philosophy1 -3 -1

Output1) "I"
2) "am"
3) "sayeth"

para recuperar un único elemento de una lista, puede utilizar el comando lindex. Sin embargo, este comando se requiere para suministrar el índice del elemento como argumento. Al igual que con lrange, el índice está basado en cero, lo que significa que el primer elemento está en el índice 0, el segundo es en el índice 1, y así sucesivamente:

lindex key_philosophy1 4

  • lindex key_philosophy1 4

Output"am"

Para saber cuántos e l ements están en un ist l dado, utilizar el l l en comando, que es la abreviatura de “ l ist l ength”:

llen key_philosophy1

  • llen key_philosophy1

Output(integer) 8

Si el valor almacenado en la clave dada no existe, LLEN devolverá un error.

Extracción de elementos de una lista

El comando lrem elimina la primera de una serie definida de ocurrencias que coinciden con un valor dado. Para experimentar con esto, cree la siguiente lista:

rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies"

  • rpush key_Bond “Nunca” “Di” “Nunca” “Una vez más” “Usted” “Sólo” “en vivo” “dos veces” “en vivo” “y” “Vamos” ” Die” ‘Mañana’ ‘Nunca’ ‘muere’

el siguiente ejemplo lrem eliminará la primera aparición del valor ‘en vivo’:

lrem key_Bond 1 "Live"

  • lrem key_Bond 1 ‘en vivo’

Esta salida del comando voluntad el número de elementos eliminados de la lista:

Output(integer) 1

el número pasado a un comando lrem también puede ser negativo. El siguiente ejemplo eliminará las dos últimas ocurrencias de valor “Nunca”:

lrem key_Bond -2 "Never"

  • lrem key_Bond -2 “Nunca”

Output(integer) 2

Los lpop quita de comando y devuelve el primer elemento, o “izquierda” de una lista:

lpop key_Bond

  • lpop key_Bond

Output"Never"

del mismo modo, para eliminar y volver el último o el elemento “más a la derecha” de una lista, el uso RPOP:

rpop key_Bond

  • RPOP key_Bond

Output"Dies"

Redis también incluye el comando rpoplpush, que elimina el último elemento de una lista y lo empuja al comienzo de otra lista:

rpoplpush key_Bond key_AfterToday

  • rpoplpush key_Bond key_AfterToday

Output"Tomorrow"

Si las claves de origen y de destino pasados ​​al comando rpoplpush son los mismos, que, esencialmente, girará los elementos de la lista.

Conclusión

Esta guía detalla una serie de comandos que puede utilizar para crear y gestionar listas de Redis. Si hay otros comandos relacionados, argumentos o procedimientos que le gustaría ver descrita en esta guía, por favor pregunte o hacer sugerencias en los comentarios a continuación.

Para obtener más información sobre los comandos Redis, ver nuestra serie de tutoriales sobre cómo gestionar una base de datos Redis.