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
1ZADD key score1 member1 [score2 member2]
Agrega uno o más miembros al conjunto ordenado, o actualiza la puntuación de miembros existentes
2ZCARD key
Obtiene el número de miembros del conjunto ordenado
3ZCOUNT key min max
Cuenta el número de miembros con puntuaciones en el rango especificado en el conjunto ordenado
4ZINCRBY key increment member
Suma el incremento (increment) a la puntuación de un miembro especificado en el conjunto ordenado
5ZINTERSTORE 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
6ZLEXCOUNT key min max
Cuenta el número de miembros dentro del rango lexicográfico especificado en el conjunto ordenado
7ZRANGE key start stop [WITHSCORES]
Devuelve los miembros dentro del rango especificado del conjunto ordenado mediante el rango de índice
8ZRANGEBYLEX key min max [LIMIT offset count]
Devuelve los miembros del conjunto ordenado mediante un rango lexicográfico
9ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
Devuelve los miembros dentro del rango especificado del conjunto ordenado por puntuación
10ZRANK key member
Devuelve el índice del miembro especificado en el conjunto ordenado
11ZREM key member [member ...]
Elimina uno o más miembros del conjunto ordenado
12ZREMRANGEBYLEX key min max
Elimina todos los miembros del rango lexicográfico dado en el conjunto ordenado
13ZREMRANGEBYRANK key start stop
Elimina todos los miembros del rango de clasificación (rank) dado en el conjunto ordenado
14ZREMRANGEBYSCORE key min max
Elimina todos los miembros del rango de puntuación dado en el conjunto ordenado
15ZREVRANGE key start stop [WITHSCORES]
Devuelve los miembros dentro del rango especificado en el conjunto ordenado, por índice, con puntuaciones de mayor a menor
16ZREVRANGEBYSCORE key max min [WITHSCORES]
Devuelve los miembros dentro del rango de puntuación especificado en el conjunto ordenado, ordenados de mayor a menor
17ZREVRANK key member
Devuelve el ranking del miembro especificado en el conjunto ordenado, con los miembros ordenados por puntuación descendente (de mayor a menor)
18ZSCORE key member
Devuelve el valor de puntuación del miembro en el conjunto ordenado
19ZUNIONSTORE destination numkeys key [key ...]
Calcula la unión de uno o más conjuntos ordenados y la almacena en una nueva key
20ZSCAN key cursor [MATCH pattern] [COUNT count]
Itera sobre los elementos del conjunto ordenado (incluyendo los miembros del elemento y las puntuaciones del elemento)
Otras extensiones