3.2.6 - Set ordenat
Els Sets Ordenats (Sorted Set) de Redis són Sets que a més de guardar els valors, guarden també una puntuació (score) per a cada valor, i Redis mantindrà el conjunt ordenat per aquesta puntuació.
Els valors no es podran repetir, però sí les puntuacions.
Molts dels comandos seran iguals que els del Set, ja que un conjunt ordenat no deixa de ser un conjunt, però amb la informació de la puntuació. En aquesta ocasió començaran per Z
ZADD
Sintaxi
zadd clau puntuació1 valor1 puntuació2 valor2 puntuacióN valorN
Afegeix els valors al conjunt (creant la clau si és necessari) amb les puntuacions corresponents. Les puntuacions seran Strings de valors reals (float). No es poden repetir els valors, però sí les puntuacions. Si intentem introduir un valor repetit, el que farà serà actualitzar la puntuació. El comando tornarà el número d'elements que realment s'han afegit.
Exemples
127.0.0.1:6379> zadd puntuacions 1 Nom1 2 Nom2 5 Nom3 4 Nom4
(integer) 4
127.0.0.1:6379> zrange puntuacions 0 -1
1) "Nom1"
2) "Nom2"
3) "Nom4"
4) "Nom3"
ZCARD
Sintaxi
zcard clau
Torna la cardinalitat, és a dir, el número d'elements del conjunt ordenat en l'actualitat.
Exemples
127.0.0.1:6379> zcard puntuacions
(integer) 4
ZSCORE
Sintaxi
zscore clau valor
Torna la puntuació (score) del valor especificat del conjunt ordenat. Si no existeix el valor o no existaix la clao, torna nil.
Exemples
127.0.0.1:6379> zscore puntuacions Nom3
"5"
127.0.0.1:6379> zscore puntuacions Nom7
(nil)
ZCOUNT
Sintaxi
zcount clau min max
Torna el número de valors que estan entre les puntuacions especificades (ambdues incloses).
Exemples
127.0.0.1:6379> zcount puntuacions 2 5
(integer) 3
ZRANGE
Sintaxi
zrange clau inici final [withscores]
Torna els elements del conjunt ordenat inclosos entre els index inici i final, ambdós inclosos. I es trauen per ordre ascentent de puntuació. El primer element és el 0. Es poden posar valors negatius, sent -1 l'últim, -2 el penúltim, ... Opcionalment podem posar WITHSCORES per a que ens torne també la puntuació de cada element
Exemples
127.0.0.1:6379> zrange puntuacions 0 -1
1) "Nom1"
2) "Nom2"
3) "Nom4"
4) "Nom3"
127.0.0.1:6379> zrange puntuacions 0 -1 withscores
1) "Nom1"
2) "1"
3) "Nom2"
4) "2"
5) "Nom4"
6) "4"
7) "Nom3"
8) "5"
Si vulguérem traure el conjunt en ordre invers de puntuació, utilitzaríem el comando ZREVRANGE (reverse range).
127.0.0.1:6379> zrevrange puntuacions 0 -1 withscores
1) "Nom3"
2) "5"
3) "Nom4"
4) "4"
5) "Nom2"
6) "2"
7) "Nom1"
8) "1"
ZRANGEBYSCORE
Sintaxi
zrangebyscore clau min max [withscores]
Torna els elements del conjunt ordenat que tenen una puntuació compresa entre min i max (ambdues incloses). I es trauen per ordre ascentent de puntuació. Opcionalment podem posar WITHSCORES per a que ens torne també la puntuació de cada element.
Exemples
127.0.0.1:6379> zrangebyscore puntuacions 2 5
1) "Nom2"
2) "Nom4"
3) "Nom3"
127.0.0.1:6379> zrangebyscore puntuacions 2 5 withscores
1) "Nom2"
2) "2"
3) "Nom4"
4) "4"
5) "Nom3"
6) "5"
Si vulguérem que les puntuacions foren estrictament majors que la puntiuació mínima i/o estrictament menor que la puntuació màxima, posaríem un parèntesi davany de min i/o max:
127.0.0.1:6379> zrangebyscore puntuacions 2 (5 withscores
1) "Nom2"
2) "2"
3) "Nom4"
4) "4"
I si vulguérem traure el conjunt en ordre invers de puntuació, utilitzaríem el comando ZREVRANGEBYSCORE (reverse range). Cuideu que com va en ordre invers, ara el valor màxim ha de ser el primer, i el mínim el segon.
127.0.0.1:6379> zrevrangebyscore puntuacions 5 2 withscores
1) "Nom3"
2) "5"
3) "Nom4"
4) "4"
5) "Nom2"
6) "2"
ZRANK
Sintaxi
zrank clau valor
Torna el número d'ordre de l'element amb el valor especificat. El primer valor és el 0. Si no existeix, torna nil.
Exemples
127.0.0.1:6379> zrank puntuacions Nom1
(integer) 0
127.0.0.1:6379> zrank puntuacions Nom4
(integer) 2
127.0.0.1:6379> zrank puntuacions Nom7
(nil)
Si volem saber el número d'ordre però des del final de la llista (en ordre invers), hem d'utilitzar ZREVRANK:
127.0.0.1:6379> zrevrank puntuacions Nom1
(integer) 3
127.0.0.1:6379> zrevrank puntuacions Nom4
(integer) 1
ZREM
Sintaxi
zrem clau valor1 valor2 valorN
Elimina els elements amb els valors especificats. Si algun valor no existeix, senzillament l'ignora. Torna el número d'elements realment eliminats.
Exemples
127.0.0.1:6379> zrem puntuacions Nom1
(integer) 1
127.0.0.1:6379> zrange puntuacions 0 -1 withscores
1) "Nom2"
2) "2"
3) "Nom4"
4) "4"
5) "Nom3"
6) "5"
ZREMRANGEBYSCORE
Sintaxi
zremrangebyscore clau min max
Elimina els elements amb puntuació compresa entre el mínim i el màxim de forma inclusiva.els valors especificats. Si volem fer-ho de forma excusiva (sense incloure les puntuacions dels extrems) posarem un parèntesi avant del mínim i/o el màxim. Torna el número d'elements realment eliminats.
Exemples
127.0.0.1:6379> zremrangebyscore puntuacions (2 4
(integer) 1
127.0.0.1:6379> zrange puntuacions 0 -1 withscores
1) "Nom2"
2) "2"
3) "Nom3"
4) "5"
ZINCRBY
Sintaxi
zincrby clau increment valor
Incrementa la puntuació de l'element especificat. El valor de la puntuació a incrementar és un número real. Torna el valor la puntuació final de l'element. Si l'element no existia, l'inserirà, assumint una puntuació inicial de 0.
Exemples
127.0.0.1:6379> zincrby puntuacions 1.5 Nom2
"3.5"
127.0.0.1:6379> zincrby puntuacions 2.75 Nom5
"2.75"
127.0.0.1:6379> zrange puntuacions 0 -1 withscores
1) "Nom5"
2) "2.75"
3) "Nom2"
4) "3.5"
5) "Nom3"
6) "5"