2.2.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.
LPUSH
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.
RPUSH
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"
LPOP
Sintaxi
lpop clau
Torna i elimina el primer element (el de més a l'esquerra).
Exemples
127.0.0.1:6379> lpop llista1
"cinquena"
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "segona"
4) "primera"
5) "sisena"
6) "setena"
RPOP
Sintaxi
rpop clau
Torna i elimina l'últim element (el de més a la dreta).
Exemples
127.0.0.1:6379> rpop llista1
"setena"
127.0.0.1:6379> lrange llista1 0 -1
1) "quarta"
2) "tercera"
3) "segona"
4) "primera"
5) "sisena"
LSET
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
LINDEX
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"
LINSERT
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"
LRANGE
Sintaxi
lrange clau inici final
Torna els elements de la llista inclosos 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"
LLEN
Sintaxi
llen clau
Torna el número d'elements de la llista
Exemples
127.0.0.1:6379> llen llista1
(integer) 7
LREM
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'esborrencomençant per l'esquerra: 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"
LTRIM
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 NoComercial SenseObraDerivada 4.0