2012-12-11 28 views
6

Ich arbeite derzeit mit Redis mit "Set" -Struktur.Redis "Null" oder "leere Liste oder Set"

Ich möchte wissen, ob es möglich ist, automatisch leeren "set" zu reinigen?

finden Else einen cron/Prozess regelmäßig leer zu reinigen "set"


UPDATE:

allgemeinere Frage, gibt es eine diff (Speichernutzung) zwischen "(null)" und "(leere Liste oder Set)"

Beispiel:

sadd x 1 
srem x 
smembers x 
(empty list or set) 

oder

sadd x 1 
del x 
smembers x 
(nil) 

Antwort

6

Dies ist bereits automatisch. Wenn eine Menge leer ist, wird sie aus dem Namespace entfernt.

> flushall 
OK 
> sadd x 1 2 3 
(integer) 3 
> keys * 
1) "x" 
> srem x 1 2 3 
(integer) 3 
> keys * 
(empty list or set) 

Sie müssen nichts Spezielles tun, um von diesem Verhalten zu profitieren.

Um Ihre zweite Frage zu beantworten, ist (nil) oder (leere Liste oder gesetzt) ​​nur eine Interpretation des Client-Programms. Auf dem Redis-Server wurde der Eintrag in beiden Fällen physisch entfernt und der zugehörige Speicher freigegeben.

+0

Aber im Speicher ist es "(leere Liste oder Satz)" ist das gleiche wie "(Nil)"? Denn wenn Sie sadd x 1 ausführen, dann del x und smelters x: prompt (nil) – Kakawait

+0

Ja, es ist das gleiche. Und btw, sadd x 1, del x und semembers x gibt auch "(leere Liste oder set)" mit redis-cli und Redis 2.6 zurück –

+0

Ich bestätige, was Didier auf Redis 2.2.12 gesagt hat, nur für den Fall, dass Sie ein Ubuntu haben 12.04 und nicht mit Version 2.6. Sobald Sie das letzte Element gefunden und leer gemacht haben, wird es aus dem Namensraum entfernt. – Maziyar

Verwandte Themen