2.3.4 - List
Les Llistes en Redis són llistes de Strings ordenades, on cada element està associat a un índex de la llista. Es poden recuperar els elements tant de forma ordenada (per l'índex) com accedint directament a una posició.
Els elements es poden afegir al principi, al final o també en una posició determinada.
La llista es crea en el moment en què s'insereix el primer element, i desapareix quan llevem l'últim element que quede.
Estan molt ben optimitzades per a la inserció i per a la consulta.
Els comandos que afecten a les llistes comencen quasi tots per L, excepte alguns que comencen per R indicant que fan l'operació per la dreta.
Per cert, els valors dels elements es poden repetir.
La llista de comandos que afecten a llistes que veurem és:
lpush , rpush , lpop , rpop , lset , lindex , linsert , lrange , llen , lrem , ltrim
Sintaxi
lpush clau valor1 valor2 valorN
Introdueix els valors a la llista (creant la clau si és necessari). Les insereix en la primera posició, o també podríem dir que per l'esquerra (Left PUSH), imaginant que els elements estan ordenats d'esquerra a dreta. Si posem més d'un valor, s'aniran introduint sempre en la primera posició. El comando tornarà el número d'elements (strings) de la llista després de la inserció.
Exemples
127.0.0.1:6379> lpush llista1 primera segona tercera
(integer) 3
127.0.0.1:6379> lrange llista1 0 -1
1) "tercera"
2) "segona"
3) "primera"
127.0.0.1:6379> lpush llista1 quarta cinquena
(integer) 5
127.0.0.1:6379> lrange llista1 0 -1
1) "cinquena"
2) "quarta"
3) "tercera"
4) "segona"
5) "primera"
Nota
Per a veure el contingut de la llista utilitzarem el comando lrange llista 0 -1, que torna la llista sencera. Veurem de forma més completa aquest comando amb posterioritat.
Sintaxi
rpush clau valor1 valor2 valorN
Introdueix els valors a la llista (creant la clau si és necessari). Les insereix en l'última posició, o també podríem dir que per la dreta (Right PUSH), imaginant que els elements estan ordenats d'esquerra a dreta. El comando tornarà el número d'elements (strings) de la llista després de la inserció.
Exemples
127.0.0.1:6379> rpush llista1 sisena setena
(integer) 7
127.0.0.1:6379> lrange llista1 0 -1
1) "cinquena"
2) "quarta"
3) "tercera"
4) "segona"
5) "primera"
6) "sisena"
7) "setena"
Sintaxi
lset clau index valor
Substitueix el valor de la posició indicada per l'índex. Tant la clau com l'element de la posició indicada han d'existir, sinó donarà error. Ara la L no significa Left sinó List.
La primera posició és la 0. I també es poden posar números negatius: -1 és l'últim, -2 el penúltim, ...
Exemples
127.0.0.1:6379> lset llista1 2 quarta
OK
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "sisena"
127.0.0.1:6379> lset llista1 -1 cinquena
OK
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "cinquena"
Observeu com es poden repetir els valors
Sintaxi
lindex clau index
Torna l'element situat en la posició indicada per l'índex, però sense eliminar-lo de la llista.
Exemples
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "cinquena"
127.0.0.1:6379> lindex llista1 0
"quarta"
127.0.0.1:6379> lindex llista1 3
"primera"
127.0.0.1:6379> lindex llista1 -1
"cinquena"
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "cinquena"
Sintaxi
linsert clau BEFORE | AFTER valor1 valor2
Insereix el valor2 abans o després (segons el que triem) de la primera vegada que troba el valor1. No substitueix, sinó que insereix en una determinada posició. Els elements que van després de l'element introduït veuran actualitzat el seu índex.
Exemples
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "cinquena"
127.0.0.1:6379> linsert llista1 AFTER quarta segona
(integer) 6
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "segona"
3) "tercera"
4) "quarta"
5) "primera"
6) "cinquena"
127.0.0.1:6379> linsert llista1 BEFORE cinquena sisena
(integer) 7
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "segona"
3) "tercera"
4) "quarta"
5) "primera"
6) "sisena"
7) "cinquena"
Si intentem inserir abans o després un element que no existeix, tornarà -1 indicant que no l'ha trobat i no farà la inserció.
127.0.0.1:6379> linsert llista1 BEFORE desena setena
(integer) -1
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "segona"
3) "tercera"
4) "quarta"
5) "primera"
6) "sisena"
7) "cinquena"
Sintaxi
lrange clau inici final
Torna els elements de la llista que hi ha entre els index inici i final, ambdós inclosos. El primer element és el 0. Es poden posar valors negatius, sent -1 l'últim, -2 el penúltim, ...
Exemples
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "segona"
3) "tercera"
4) "quarta"
5) "primera"
6) "sisena"
7) "cinquena"
127.0.0.1:6379> lrange llista1 2 4
1) "tercera"
2) "quarta"
3) "primera"
127.0.0.1:6379> lrange llista1 1 -2
1) "segona"
2) "tercera"
3) "quarta"
4) "primera"
5) "sisena"
127.0.0.1:6379> lrange llista1 4 4
1) "primera"
Sintaxi
lrem clau número valor
Elimina elements de la llista que coincidisquen amb el valor proporcionat. Ja sabem que els valors es poden repetir. Amb el número indiquem quants elements volem que s'esborren: si posem 1 s'esborrarà el primer element amb aquest valor, si posem 2 s'esborraran els dos primers elements (els de més a l'esquerra) que tingen aquest valor. Si posem 0 s'esborraran tots els elements amb aquest valor
Exemples
127.0.0.1:6379> rpush llista1 segona
(integer) 8
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "segona"
3) "tercera"
4) "quarta"
5) "primera"
6) "sisena"
7) "cinquena"
8) "segona"
127.0.0.1:6379> lrem llista1 1 segona
(integer) 1
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "quarta"
4) "primera"
5) "sisena"
6) "cinquena"
7) "segona"
127.0.0.1:6379> lrem llista1 0 quarta
(integer) 2
127.0.0.1:6379> lrange llista1 0 -1
1) "tercera"
2) "primera"
3) "sisena"
4) "cinquena"
5) "segona"
Sintaxi
ltrim clau inici final
Elimina els elements que queden fora dels índex inici i final, és a dir elimina els que estiguen a l'esquerra d'inici, i els que estiguen a la dreta de final.
Exemples
127.0.0.1:6379> ltrim llista1 1 -2
OK
127.0.0.1:6379> lrange llista1 0 -1
1) "primera"
2) "sisena"
3) "cinquena"
Llicenciat sota la Llicència Creative Commons Reconeixement SenseObraDerivada 4.0