2012-12-11 13 views
6

Attualmente sto lavorando con redis utilizzando la struttura "set".Redis "nil" o "elenco vuoto o set"

Voglio sapere se è possibile pulire automaticamente vuoto "set"?

Else trovare un cron/processo per pulire periodicamente vuota "set"


UPDATE:

Più domanda generica, c'è un diff (utilizzo della memoria) tra "(zero)" e "(elenco vuoto o set)"

esempio:

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

o

sadd x 1 
del x 
smembers x 
(nil) 

risposta

6

Questo è già automatico. Quando un set è vuoto, viene rimosso dallo spazio dei nomi.

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

Non devi fare nulla di specifico per beneficiare di questo comportamento.

Per rispondere alla seconda domanda, (nil) o (elenco vuoto o set) è solo un'interpretazione del programma client. Nel server Redis, in entrambi i casi, la voce è stata rimossa fisicamente e la memoria associata è stata liberata.

+0

Ma in memoria è "(lista vuota o set)" è uguale a "(nil)"? Perché se esegui sadd x 1, quindi del x e smembers x: prompt (nil) – Kakawait

+0

Sì, è lo stesso. E btw, sadd x 1, del x e smembers x restituisce anche "(lista vuota o set)" con redis-cli e Redis 2.6 –

+0

Confermo quello che Didier ha detto su Redis 2.2.12 nel caso in cui si abbia un Ubuntu 12.04 e non utilizzare la versione 2.6. una volta srem l'ultimo elemento e renderlo vuoto lo rimuoverà dallo spazio dei nomi. – Maziyar