Redis conjunto ordenado (sorted set)
El conjunto ordenado de Redis, al igual que un conjunto, es también una colección de elementos de tipo string y no permite miembros duplicados.
La diferencia es que cada elemento está asociado a una puntuación (score) de tipo double. Redis utiliza la puntuación para ordenar los miembros del conjunto de menor a mayor.
Los miembros del conjunto ordenado son únicos, pero las puntuaciones (score) pueden repetirse.
El conjunto se implementa mediante una tabla hash, por lo que la complejidad de agregar, eliminar y buscar es O(1). El número máximo de miembros en un conjunto es 232- 1 (4294967295, cada conjunto puede almacenar más de 4 mil millones de miembros).
Ejemplo
redis 127.0.0.1:6379> ZADD ejemplokey 1 redis (integer) 1 redis 127.0.0.1:6379> ZADD ejemplokey 2 mongodb (integer) 1 redis 127.0.0.1:6379> ZADD ejemplokey 3 mysql (integer) 1 redis 127.0.0.1:6379> ZADD ejemplokey 3 mysql (integer) 0 redis 127.0.0.1:6379> ZADD ejemplokey 4 mysql (integer) 0 redis 127.0.0.1:6379> ZRANGE ejemplokey 0 10 WITHSCORES 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4"
En el ejemplo anterior usamos el comandoZADDagregamos tres valores al conjunto ordenado de Redis y les asociamos puntuaciones.
Comandos de Redis conjunto ordenado
La siguiente tabla enumera los comandos básicos del conjunto ordenado de Redis:
| N.º | Comando y descripción |
|---|---|
| 1 | ZADD key score1 member1 [score2 member2] Agrega uno o más miembros al conjunto ordenado, o actualiza la puntuación de miembros existentes |
| 2 | ZCARD key Obtiene el número de miembros del conjunto ordenado |
| 3 | ZCOUNT key min max Cuenta el número de miembros con puntuaciones en el rango especificado en el conjunto ordenado |
| 4 | ZINCRBY key increment member Suma el incremento (increment) a la puntuación de un miembro especificado en el conjunto ordenado |
| 5 | ZINTERSTORE destination numkeys key [key ...] Calcula la intersección de uno o más conjuntos ordenados y almacena el conjunto resultante en un nuevo conjunto ordenado destination |
| 6 | ZLEXCOUNT key min max Cuenta el número de miembros dentro del rango lexicográfico especificado en el conjunto ordenado |
| 7 | ZRANGE key start stop [WITHSCORES] Devuelve los miembros dentro del rango especificado del conjunto ordenado mediante el rango de índice |
| 8 | ZRANGEBYLEX key min max [LIMIT offset count] Devuelve los miembros del conjunto ordenado mediante un rango lexicográfico |
| 9 | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] Devuelve los miembros dentro del rango especificado del conjunto ordenado por puntuación |
| 10 | ZRANK key member Devuelve el índice del miembro especificado en el conjunto ordenado |
| 11 | ZREM key member [member ...] Elimina uno o más miembros del conjunto ordenado |
| 12 | ZREMRANGEBYLEX key min max Elimina todos los miembros del rango lexicográfico dado en el conjunto ordenado |
| 13 | ZREMRANGEBYRANK key start stop Elimina todos los miembros del rango de clasificación (rank) dado en el conjunto ordenado |
| 14 | ZREMRANGEBYSCORE key min max Elimina todos los miembros del rango de puntuación dado en el conjunto ordenado |
| 15 | ZREVRANGE key start stop [WITHSCORES] Devuelve los miembros dentro del rango especificado en el conjunto ordenado, por índice, con puntuaciones de mayor a menor |
| 16 | ZREVRANGEBYSCORE key max min [WITHSCORES] Devuelve los miembros dentro del rango de puntuación especificado en el conjunto ordenado, ordenados de mayor a menor |
| 17 | ZREVRANK key member Devuelve el ranking del miembro especificado en el conjunto ordenado, con los miembros ordenados por puntuación descendente (de mayor a menor) |
| 18 | ZSCORE key member Devuelve el valor de puntuación del miembro en el conjunto ordenado |
| 19 | ZUNIONSTORE destination numkeys key [key ...] Calcula la unión de uno o más conjuntos ordenados y la almacena en una nueva key |
| 20 | ZSCAN key cursor [MATCH pattern] [COUNT count] Itera sobre los elementos del conjunto ordenado (incluyendo los miembros del elemento y las puntuaciones del elemento) |