Manipulation des Listes dans Redis

Structure de Données List dans Redis

Redis fournit un type de données List qui stocke une séquence ordonnée d'éléments. L'implémentation interne peut utiliser soit un tableau dynamique (similaire à ArrayList) pour un accès rapide par index, soit une liste doublement chaînée (LinkedList) pour des insertions et suppressions efficaces aux extrémités.

Les opérations courantse sur les List incluent l'ajout d'éléments aux extrémités, le retrait d'éléments, la consultation du contenu et des mdoifications spécifiques. Voici des exemples de commandes pour manipuler ces listes.

Ajout d'éléments aux extrémités

Pour insérer des éléments à gauche (tête) de la liste, utilisez lpush. Par exemple, ajoutons des valeurs à une liste nommée données_col.

127.0.0.1:6379> lpush données_col alpha beta gamma
(integer) 3
127.0.0.1:6379> lpush données_col 10 20 30
(integer) 6
127.0.0.1:6379> lrange données_col 0 -1
1) "30"
2) "20"
3) "10"
4) "gamma"
5) "beta"
6) "alpha"

Pour insérer à droite (queue), utilisez rpush, ce qui est souvent plus intuitif pour l'ordre séquentiel.

127.0.0.1:6379> rpush liste_exemple x y z
(integer) 3
127.0.0.1:6379> rpush liste_exemple 100 200
(integer) 5
127.0.0.1:6379> lrange liste_exemple 0 -1
1) "x"
2) "y"
3) "z"
4) "100"
5) "200"

Retrait d'éléments

Pour retirer un élément de la tête, utilisez lpop.

127.0.0.1:6379> lrange liste_exemple 0 -1
1) "x"
2) "y"
3) "z"
4) "100"
5) "200"
127.0.0.1:6379> lpop liste_exemple
"x"
127.0.0.1:6379> lrange liste_exemple 0 -1
1) "y"
2) "z"
3) "100"
4) "200"

Pour retirer de la queue, utilisez rpop.

127.0.0.1:6379> rpop liste_exemple
"200"
127.0.0.1:6379> lrange liste_exemple 0 -1
1) "y"
2) "z"
3) "100"

Consultation et modification

Pour obtenir la longueur de la liste, utilisez llen.

127.0.0.1:6379> llen liste_exemple
(integer) 3

Les commandes lpushx et rpushx insèrent des éléments seulement si la liste existe déjà.

127.0.0.1:6379> lpushx liste_exemple nouveau_element
(integer) 4
127.0.0.1:6379> rpushx liste_exemple ajout_final
(integer) 5
127.0.0.1:6379> lrange liste_exemple 0 -1
1) "nouveau_element"
2) "y"
3) "z"
4) "100"
5) "ajout_final"

La commande lrem supprime des occurrences spécifiques d'un élément. Par exemple, créons une liste avec des doublons.

127.0.0.1:6379> rpush test_rem a b a c a b
(integer) 6
127.0.0.1:6379> lrange test_rem 0 -1
1) "a"
2) "b"
3) "a"
4) "c"
5) "a"
6) "b"

Supprimons les deux premières occurrences de 'a' depuis la gauche.

127.0.0.1:6379> lrem test_rem 2 a
(integer) 2
127.0.0.1:6379> lrange test_rem 0 -1
1) "b"
2) "c"
3) "a"
4) "b"

Pour définir une valeur à un index spécifique, utilisez lset.

127.0.0.1:6379> lset test_rem 1 z
OK
127.0.0.1:6379> lrange test_rem 0 -1
1) "b"
2) "z"
3) "a"
4) "b"

Pour insérer un élément avant ou après une valeur référente, utilisez linsert.

127.0.0.1:6379> linsert test_rem before z avant_z
(integer) 5
127.0.0.1:6379> linsert test_rem after z apres_z
(integer) 6
127.0.0.1:6379> lrange test_rem 0 -1
1) "b"
2) "avant_z"
3) "z"
4) "apres_z"
5) "a"
6) "b"

La commande rpoplpush retire un élément de la queue d'une liste et l'insère en tête d'une autre, utile pour les opérations atomiques de transfert.

127.0.0.1:6379> rpush source_a p q r
(integer) 3
127.0.0.1:6379> rpush dest_b 1 2 3
(integer) 3
127.0.0.1:6379> rpoplpush source_a dest_b
"r"
127.0.0.1:6379> lrange source_a 0 -1
1) "p"
2) "q"
127.0.0.1:6379> lrange dest_b 0 -1
1) "r"
2) "1"
3) "2"
4) "3"

Ces opérations offrent une flexibilité pour gérer des files d'attente, des historiques ou des collections ordonnées dans Redis.

Étiquettes: Redis listes Commandes Redis structures de données manipulation de données

Publié le 10 juillet à 04h13