Cómo usar el set clasificado Redis

Cómo usar el set clasificado Redis
Los conjuntos ordenados son uno de los tipos de datos más valiosos y avanzados en Redis. Los conjuntos ordenados son muy similares a los conjuntos porque ambos contienen secuencias de cadenas no repetidas. Sin embargo, a diferencia de los conjuntos estándar, los conjuntos ordenados incluyen un valor de puntaje asociado con cada miembro.

El valor de puntaje les permite ordenarse en un orden específico. Cada miembro de un conjunto ordenado debe ser único pero puede compartir un valor de puntaje con varios miembros.

En este tutorial, aprenderá todo sobre los conjuntos ordenados en Redis y cómo puede usarlos en sus bases de datos.

Asegúrese de tener un servidor Redis existente instalado y ejecutado para seguir este tutorial.

Creación de conjuntos ordenados

Para crear un conjunto ordenado en Redis, use el comando ZADD en el Redis CLI. El comando zadd toma tres argumentos principales.

El primero es el nombre de la clave que contiene el conjunto ordenado.

El segundo argumento contiene el puntaje del miembro que se agrega al conjunto ordenado.

El argumento final y el tercer es el valor real del miembro en el conjunto ordenado.

Nota: El orden de los argumentos es importante ya que cada uno representa los valores según lo dictado anteriormente.

Eche un vistazo al ejemplo que se muestra a continuación.

127.0.0.1: 6379> Capitanes Zadd 1 "Jonathan Archer"

El comando anterior crea un conjunto ordenado que contiene los nombres de los capitanes de Star Trek. En el ejemplo anterior, el valor de "Jonathan Archer" tiene una puntuación de 1.

El comando devuelve un valor entero que indica el número total de miembros agregados al conjunto ordenado.

Redis no lo restringe a agregar un solo miembro al conjunto. Puede agregar múltiples valores. Por ejemplo:

Zadd Captains 2 "Carol Freeman" 4 "Christopher Pike" 1 "Jean-Luc Picard" 3 "Kathryn Janeway."

Notará dos cosas principales en el comando anterior:

  1. Primero, la puntuación para cada miembro en el ordenado no tiene que ser secuencial. Puede asignar una puntuación de 100 a un miembro incluso si los otros puntajes no están establecidos en ningún valor.
  2. En segundo lugar, un miembro puede tener una puntuación similar a otro miembro en el set ordenado.

Opciones de comando ZADD.

El comando ZADD acepta múltiples opciones para modificar su comportamiento y funcionalidad. Estas opciones incluyen:

  1. NX: la opción NX le dice al comando ZADD solo para agregar nuevos miembros. Esta opción evita que el comando actualice los miembros existentes en el conjunto especificado.
  2. Por otro lado, xx: la opción XX solo actualizará a los miembros existentes y no agregará ningún miembro nuevo al conjunto.

Nota: las opciones NX y XX son contradictorias. Por lo tanto, solo puede usar una opción en un solo comando.

  1. CH - La opción CH le dice a ZADD que incluya el número de elementos cambiados. Por defecto, ZADD solo devolverá el número de elementos recién agregados. El comando ZADD devolverá el número de elementos agregados y elementos actualizados utilizando la opción CH.
  2. Over - La opción INGR le dice al comando ZADD que incrementa la puntuación de un miembro. Si el miembro especificado no existe en el conjunto ordenado, Redis lo creará automáticamente y establecerá el incremento como la puntuación.

NOTA: Uso del comando Zincrby en lugar de ZADD con la opción INGR se recomienda. Ambos realizan la misma función.

Buscar miembros de un set ordenado

Para recuperar miembros de un conjunto ordenado en Redis, use el comando zrange. El comando toma el nombre de la clave y un rango específico de los miembros que desea recuperar. Los valores de rango de los miembros del conjunto ordenado son índices basados ​​en cero. Por lo tanto, el primer miembro en el conjunto está en el índice 0.

Por ejemplo, para recuperar a los miembros del índice 0 al 10, ingrese el comando:

127.0.0.1: 6379> Capitanes Zrange 0 10

El comando devolverá a los miembros dentro de ese rango especificado. La salida de ejemplo es como se muestra a continuación:

1) "Jonathan Archer"
2) "Carol Freeman"
3) "Kathryn Janeway"
4) "Christopher Pike"
5) "Jean-Luc Picard"

En los casos en que el conjunto ordenado contiene miembros con un valor de puntaje similar, los miembros se ordenarán en orden lexicográfico.

Si desea obtener los miembros dentro del conjunto y sus puntajes asociados, puede usar la opción WithScores.

127.0.0.1: 6379> Capitanes de Zrange 0 10 Withscores

La salida de ejemplo del comando anterior es como se muestra.

1) "Jonathan Archer"
2) "1"
3) "Carol Freeman"
4) "2"
5) "Kathryn Janeway"
6) "3"
7) "Christopher Pike"
8) "4"
9) "Jean-Luc Picard"
10) "5"

Supongamos que desea obtener a los miembros en orden inverso. Recuerde que el comando zrange devuelve los miembros solo en orden ascendente. Para obtener el orden inverso, use el comando ZrevRange.

127.0.0.1: 6379> Capitanes de Zrevrange 0 10

El comando dará como resultado un orden inverso.

1) "Jean-Luc Picard"
2) "Christopher Pike"
3) "Kathryn Janeway"
4) "Carol Freeman"
5) "Jonathan Archer"

También puede incluir la opción WithOptions en el comando ZrevRange.

1) "Jean-Luc Picard"
2) "5"
3) "Christopher Pike"
4) "4"
5) "Kathryn Janeway"
6) "3"
7) "Carol Freeman"
8) "2"
9) "Jonathan Archer"
10) "1"

El valor resultante contendrá los puntajes en orden inverso.

Eliminar a los miembros de un conjunto ordenado

Para eliminar a los miembros de un conjunto ordenado, use el comando zrem.

127.0.0.1: 6379> Capitanes de Zrem "Jonathan Archer"

El comando devolverá un valor entero que muestra el número de elementos eliminados del conjunto ordenado.

Para eliminar elementos por rango, use el comando zrembyrange.

127.0.0.1: 6379> Capitanes Zremrangebylex [A [Z

El comando eliminará los valores en función de su rango léxico.

Para eliminar a los miembros en su rango de puntaje, use el comando zremrangebyscore.

127.0.0.1: 6379> Zremrangebyscore Captains 0 5

Obtener información sobre conjuntos ordenados

Use el comando zcard para obtener el número de miembros en un conjunto ordenado determinado.

127.0.0.1: 6379> Capitanes de Zcard

El valor de retorno es un entero que muestra el número de elementos en un conjunto.

Si desea obtener el número de miembros dentro de un rango específico, use el comando ZCount.

127.0.0.1: 6379> Zcount Captains 0 10

Del mismo modo, el comando devuelve un valor entero.

Para obtener la puntuación de un miembro específico dentro de un conjunto ordenado, use el comando ZSCORE:

127.0.0.1: 6379> Capitanes Zscore "Carol Freeman"
"2"

El comando devolverá el puntaje del miembro si existe.

Conclusión

Este artículo discutió cómo comenzar y usar conjuntos ordenados en Ruby. Tenga en cuenta que hay más en conjuntos clasificados de lo que se discute en esta guía. Considere la documentación para obtener más información.