Saltar al contenido

Cómo administrar los conjuntos de Redis

marzo 4, 2020

 

Introducción

Redis es un código abierto, almacén de datos clave-valor en memoria. Establece en Redis son colecciones de cadenas almacenadas en una clave dada. Cuando se mantiene en un conjunto, un valor de registro individual se conoce como un miembro . A diferencia de las listas, conjuntos son desordenada y no permiten valores repetidos.

Este tutorial explica cómo crear conjuntos, recuperar y eliminar miembros y compara los miembros de los diferentes conjuntos.

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 conjuntos de

El sadd comando le permite crear un conjunto y añadir uno o más miembros de la misma. El siguiente ejemplo creará un conjunto en una key_horror clave llamada con los miembros de “Frankenstein” y “Godzilla”:

sadd key_horror "Frankenstein" "Godzilla"

  • Sadd key_horror “Frankenstein” “Godzilla”

Si tiene éxito, sadd devolverá un número entero que muestra cómo muchos miembros se añade al conjunto:

Output(integer) 2

Si intenta añadir miembros de un conjunto a una clave que ya está sosteniendo un valor distinto de conjunto, se devolverá un error. El primer comando en este bloque crea una lista con nombre key_action con un elemento, “Shaft”. Los siguientes intentos comando para agregar un miembro del conjunto, “Shane”, a la lista, pero esto produce un error debido a los tipos de datos choque:

rpush key_action "Shaft"
sadd key_action "Shane"

  • rpush key_action “Shaft”
  • Sadd key_action “Shane”

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

Tenga en cuenta que los conjuntos no permiten más de una ocurrencia del mismo miembro:

sadd key_comedy "It's" "A" "Mad" "Mad" "Mad" "Mad" "Mad" "World"

  • Sadd key_comedy “es” “A” “Mad” “Mad” “Mad” “Mad” “Mad” “Mundial”

Output(integer) 4

a pesar de que esta saddcommand especifica ocho miembros, cuatro de descarta el duplicado “Mad” miembros que resulta en un tamaño de conjunto de 4.

miembros Recuperación de Conjuntos

en esta sección, vamos a repasar una serie de comandos que el regreso Redis información sobre los miembros, celebrada en un conjunto. Para practicar los comandos descritos aquí, ejecute el siguiente comando, que va a crear un conjunto de seis miembros en una clave llamada key_stooges:

sadd key_stooges "Moe" "Larry" "Curly" "Shemp" "Joe" "Curly Joe"

  • Sadd key_stooges “Moe” “Larry” “Curly” “Shemp” “Joe” “Curly Joe “

para volver todos los miembros de un conjunto, se ejecutan las smembers comando seguido de la tecla que desea inspeccionar:

smembers key_stooges

  • smembers key_stooges cheque

Output1) "Curly"
2) "Moe"
3) "Larry"
4) "Shemp"
5) "Curly Joe"
6) "Joe"

para si un valor específico es un miembro de un conjunto, utilice el sismember comando:

sismember key_stooges "Harpo"

  • key_stooges sismember “Harpo”

Si el elemento “Harpo” es un miembro de los key_stooges establecer, sismember volverá 1. de lo contrario, devolverá 0:

Output(integer) 0

Para ver cuántos miembros son en un conjunto dado (en otras palabras, para encontrar el cardinalidad de un conjunto dado), plazo SCard:

scard key_stooges

  • SCard key_stooges

Output(integer) 6

para devolver un elemento de azar de un conjunto, de gestión srandmember:

srandmember key_stooges

  • srandmember key_stooges

Output"Larry"

Para devolver varios elementos al azar, distintos de un conjunto, puede seguir el comando srandmember con el número de elementos que desea recuperar:

srandmember key_stooges 3

  • srandmember key_stooges 3

Output1) "Larry"
2) "Moe"
3) "Curly Joe"

Si pasa un número negativo a srandmember, se permite que el comando para volver el mismo elemento varias veces:

srandmember key_stooges -3

  • key_stooges srandmember -3

Output1) "Shemp"
2) "Curly Joe"
3) "Curly Joe"

la función de elemento aleatorio utilizado en srandmember no es perfectamente al azar, aunque su rendimiento mejora en grandes conjuntos de datos. Consulte la documentación oficial de la orden para más detalles.

eliminar miembros de los conjuntos de

Redis viene con tres comandos utilizados para eliminar miembros de un conjunto: SPop, srem y smove.

SPop selecciona al azar un número especificado de miembros de un conjunto y los devuelve, similar a srandmember, pero entonces los elimina del conjunto. Se acepta el nombre de la clave que contiene un conjunto y el número de miembros de retirar del conjunto como argumentos. Si no se especifica un número, SPop tomaría el valor de volver y la eliminación de un solo valor.

El comando siguiente ejemplo quitar y volver dos elementos seleccionados al azar de los key_stooges set crean en la sección anterior:

spop key_stooges 2

  • SPop key_stooges 2

Output1) "Shemp"
2) "Larry"

srem que permite eliminar uno o más específicas miembros de un conjunto, en lugar de los aleatorios: key_stooges Srem

srem key_stooges "Joe" "Curly Joe"

  • “Joe” “Curly Joe”

en lugar de devolver a los miembros retirados del conjunto, Srem devuelve un entero que muestra cómo se eliminaron muchos miembros:

Output(integer) 2

uso smove mover una miembro de un conjunto a otro. Este comando acepta como argumentos el conjunto de la fuente, el conjunto de destino, y el miembro de movimiento, en ese orden. Tenga en cuenta que smove sólo se le permite mover un miembro a la vez:

smove key_stooges key_jambands "Moe"

  • smove key_stooges key_jambands “Moe”

Si el comando mueve el miembro de éxito, volverá (entero) 1:

Output(integer) 1

Si smove falla, en su lugar volverá (entero) 0. Obsérvese que si la clave de destino no existe, smove lo creará antes de mover el miembro en ella.

Conjuntos Comparando

Redis también proporciona una serie de comandos que se encuentran las diferencias y similitudes entre las series. Para demostrar cómo funcionan, esta sección se referirá a tres conjuntos con nombre presidentes, reyes y Beatles. Si desea probar los comandos de esta sección usted mismo, crear estos conjuntos y rellenarlas con los siguientes comandos Sadd:

sadd presidents "George" "John" "Thomas" "James"
sadd kings "Edward" "Henry" "John" "James" "George"
sadd beatles "John" "George" "Paul" "Ringo"

  • Sadd presidentes “George” “John” “Thomas” “James”
  • Sadd reyes ” Edward” “Henry” “John” “James” “George”
  • Sadd Beatles “John” “George” “Paul” “Ringo”

sinterización compara diferentes conjuntos y devuelve el conjunto intersección , o los valores que aparecen en cada conjunto:

sinter presidents kings beatles

  • sinterización presidentes reyes beatles

Output1) "John"
2) "George"

sinterstore realiza una función similar, pero en lugar de volver a los miembros de intersección crea un nuevo conjunto en el destino especificado que contiene estos miembros de intersección. Tenga en cuenta que si el destino ya existe, sinterstore sobrescribirá su contenido:

sinterstore new_set presidents kings beatles
smembers new_set

  • sinterstore new_set presidentes reyes Beatles
  • smembers new_set

Output1) "John"
2) "George"

sdiff devuelve el diferencia de conjuntos – miembros que resultan de la diferencia del primer conjunto especificado de cada uno de los siguientes conjuntos:

sdiff presidents kings beatles

  • sdiff presidentes reyes beatles

Output1) "Thomas"

en otras palabras, miradas sdiff en cada miembro en el conjunto de primera dado y luego compara los a los miembros de cada conjunto sucesivo. Cualquier miembro en el primer conjunto que también aparece en los siguientes conjuntos se retira, y sdiff devuelve los miembros restantes. Piense en ello como la eliminación de los miembros de las series subsiguientes de la primera serie.

sdiffstore realiza una función similar a sdiff, pero en lugar de devolver la diferencia de conjuntos se crea un nuevo conjunto a un destino determinado, que contiene la diferencia de conjuntos:

sdiffstore new_set beatles kings presidents
smembers new_set

  • sdiffstore new_set beatles reyes presidentes
  • smembers new_set

Output1) "Paul"
2) "Ringo"

igual sinterstore, sdiffstore sobrescribirá la tecla de destino si ya existe.

SUNION devuelve el unión de conjuntos , o un conjunto que contiene todos los miembros de cada conjunto se especifica:

sunion presidents kings beatles

  • presidentes SUNION reyes Beatles trata SUNION

Output1) "Thomas"
2) "George"
3) "Paul"
4) "Henry"
5) "James"
6) "Edward"
7) "John"
8) "Ringo"

los resultados como un nuevo conjunto, ya que sólo permite una ocurrencia de cualquier miembro dado.

sunionstore realiza una función similar, pero crea un nuevo conjunto que contiene el conjunto unión a un destino determinado en lugar de devolver los resultados:

sunionstore new_set presidents kings beatles

  • sunionstore new_set presidentes reyes Beatles

Output(integer) 8

Al igual que con sinterstore y sdiffstore, sunionstore sobrescribirá la tecla de destino si ya existe.

Conclusión

Esta guía detalla una serie de comandos que se utilizan para crear y administrar conjuntos 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.