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:
Opciones de comando ZADD.
El comando ZADD acepta múltiples opciones para modificar su comportamiento y funcionalidad. Estas opciones incluyen:
Nota: las opciones NX y XX son contradictorias. Por lo tanto, solo puede usar una opción en un solo comando.
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.