Omet navegació

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

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 clau, 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 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"

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 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"

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. 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"

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"