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?

Abe Voelker
quelle
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)
Anurag
quelle
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