2.3.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.
Alguns 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ó (i que no es poden repetir els valors). En aquesta ocasió començaran per Z.
I aquesta és la llista dels que veurem:
zadd , zcard , zscore , zcount , zrange , zrangebyscore , zrank , zrem , zremrangebyscore , zincrby
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"
Sintaxi
zrange clau inici final [withscores]
Torna els elements del conjunt ordenat que hi ha 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"
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 davant 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"
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
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"
Sintaxi
zremrangebyscore clau min max
Elimina els elements amb puntuació compresa entre el mínim i el màxim de forma inclusiva. Si volem fer-ho de forma excusiva (sense incloure les puntuacions dels extrems) posarem un parèntesi davant 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"
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"
Llicenciat sota la Llicència Creative Commons Reconeixement SenseObraDerivada 4.0