Supprimer toutes les entrées d’une liste Redis

Supposons que vous ayez un type de données LIST dans Redis. Comment supprimez-vous toutes ses entrées? J’ai déjà essayé ceci:

LTRIM key 0 0 LTRIM key -1 0 

Les deux quittent le premier élément. Cela laissera tous les éléments:

 LTRIM key 0 -1 

Je ne vois pas de commande séparée pour vider complètement une liste.

Supprimez la clé et cela effacera tous les éléments. Ne pas avoir la liste du tout est similaire à ne pas avoir d’éléments. Redis ne lancera aucune exception lorsque vous essayez d’accéder à une clé inexistante.

 DEL key 

Voici quelques journaux de la console.

 redis> CLES *
 (liste vide ou ensemble)
 redis> LPUSH nomme John
 (entier) 1
 redis> LPUSH nomme Mary
 (entier) 2
 redis> LPUSH nomme Alice
 (entier) 3
 redis> Noms LLEN
 (entier) 3
 redis> Noms LRANGE 0 2
 1) "Alice"
 2) "Marie"
 3) "John"
 redis> noms DEL
 (entier) 1
 redis> Noms LLEN
 (entier) 0
 redis> Noms LRANGE 0 2
 (liste vide ou ensemble)

Vous pouvez supprimer toutes les valeurs de la liste uniquement si la liste comporte plusieurs valeurs

 LTRIM key -1 0 

Exemple:

 redis 127.0.0.1:6379> RPUSH mylist four 1 3 1 (integer) 4 redis 127.0.0.1:6379> KEYS * 1) "newKey" 2) "firstHash" 3) "secondList" 4) "test4" 5) "firstList" 6) "mylist" redis 127.0.0.1:6379> LTRIM mylist -1 0 OK redis 127.0.0.1:6379> LRANGE mylist 0 -1 (empty list or set) redis 127.0.0.1:6379> KEYS * 1) "newKey" 2) "firstHash" 3) "secondList" 4) "test4" 5) "firstList" 

Mais si la liste a une seule valeur, vous devez utiliser

 DEL key 

Utilisez simplement LTRIM . … Aaa et la magie ici est d’utiliser le start plus que la end .

 LTRIM key 99 0 

Et … boum! il y a toute la liste des éléments. Just * pooof * juste devant vos yeux !! Aucun résidu restant, et absolument aucune question posée.

Note: Cela entraînera la “suppression” de la clé ( comme dans la suppression ) comme décrit ici

… si start est plus grand que la fin de la liste, ou start> end, le résultat sera une liste vide (qui entraîne la suppression de la clé).

Je réponds sur mon téléphone donc je ne peux pas bien formater la réponse.

Cela pourrait être une réponse tardive, mais je la garde ici au cas où quelqu’un aurait encore besoin de cette fonctionnalité.

Réponse courte

lsortingm mylist 0 – (n + 1) où mylist est la clé et n la longueur de mylist.

Longue réponse

La façon dont fonctionne lsortingm est que, il prend deux indices et renvoie les éléments qui les séparent, y compris les indices.

Lsortingm list startIndex endIndex

Exemple en supposant que nous ayons une liste redis avec la clé mylist contenant 10 entrées:

lsortingm mylist 0 5 découpera la liste en éléments allant de l’index 0 à l’index 5. Et supprimera ceux qui ne sont pas compris dans cette plage.

Heureusement, les opérations de liste redis prennent en charge l’indexation négative qui s’avère extrêmement utile dans certaines situations. Généralement, lorsque vous ne connaissez pas la longueur de la liste.

-1 se réfère au dernier élément, – 2 avant-dernier élément, etc. Et (-n) est le premier élément.

Les indices hors limites ne sont pas dangereux. Si l’indice de fin est supérieur à la longueur de la liste, redis le considère comme égal au dernier index.

C’est pourquoi lsortingm mylist 0, – (n +1) efface la liste. Il le fait parce que (-n) équivaut à l’index 0. L’ajout de 1 à lui ne laisse aucun élément dans cette plage puisque cela sera avant le premier élément.

J’ai essayé ceci et ça marche pour moi. Changez simplement myList pour votre nom de liste et exécutez-le redis-cli KEYS "myList:*" | xargs redis-cli DEL redis-cli KEYS "myList:*" | xargs redis-cli DEL

la réponse acceptée est fausse. suppose que j’ai

 redis 127.0.0.1:6379> KEYS * 1) "newKey" 2) "firstHash" 3) "secondList" 4) "test4" 5) "firstList" 6) "mylist" 

pour utiliser l’exemple de ahmed, qui est en fait correct. maintenant, si je le fais:

 DEL 'test4' 

je me retrouve avec:

 1) "newKey" 2) "firstHash" 3) "secondList" 4) "firstList" 5) "mylist"` 

donc, je n’ai pas retiré toutes les entrées de la liste ‘test4’, j’ai supprimé test4 lui-même . pas la même chose. pas du tout. J’ai une petite application où les clés de liste sont des hashs calculés à partir de plusieurs données (bon, n’est-ce pas?), ces listes sont parfois effacées, mais la sémantique d’une liste vide et d’une liste inexistante sont très différentes. donc, non, je ne veux pas DEL ‘myhashes’, je veux juste supprimer toutes les entrées.

Méfiez-vous, oh vous qui erre ici.