Ein Set in Redis leeren / löschen?


70

Vielleicht bin ich nur blind, aber ich sehe in Redis keinen expliziten Set-Befehl zum Leeren eines vorhandenen Sets (ohne die gesamte Datenbank zu leeren). Zur Zeit mache ich einen Set-Unterschied am Set mit sich selbst und speichere es wieder in sich selbst:

redis> SMEMBERS metasyn
1) "foo"
2) "bar"
redis> SDIFFSTORE metasyn metasyn metasyn
(integer) 0
redis> SMEMBERS metasyn
(empty list or set)

Aber das sieht ein bisschen albern aus ... gibt es einen besseren Weg, dies zu tun?


Ich mochte Ihre Kreativität darin
— Mo Ganji

Antworten:


109

Sie können das Set insgesamt mit löschen DEL.

DEL metasyn

Von der Redis-Konsole,

redis> SMEMBERS metasyn
1) "foo"
2) "bar"
redis> DEL metasyn
(integer) 1
redis> SMEMBERS metasyn
(empty list or set)

3
Wow, ich hätte das zuerst versuchen sollen, haha. Aus irgendeinem Grund dachte ich, dass dieser Befehl nicht für Sets gilt. Vielen Dank!
— Abe Voelker

7
Ja, es hat eine Weile gedauert, bis ich das herausgefunden habe. Die Befehle Keysgelten global für alle Schlüssel, unabhängig vom Datentyp.
— Anurag

9
Aha; Ich nehme an, das macht Sinn. Na ja, ich überlasse diese peinliche Frage dem nächsten Narren wie mir, der sich nicht um das Tutorial gekümmert hat . :-)
— Abe Voelker

Und ich wäre dieser Dummkopf, denn warum sollten Sie einen leeren Satz in Erinnerung behalten wollen ...
— Jonathan Leung

3
Weil eine leere Menge etwas anderes bedeutet als eine nicht existierende Menge. Betrachten Sie: newuser111: Fragen (die Menge der Fragen des neuen Benutzers 111) vs. nonexistentuser: Fragen (angeblich die Menge der Fragen des nicht existierenden Benutzers, eines Benutzers, der nicht existiert). Es ist nützlich, einen leeren Satz zu haben, um zwischen den beiden zu unterscheiden.
— Chris Pfohl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.