2013-05-15 20 views
24

Sto avendo un hash set nei nomi Redis come = "match/123/risultato"Rimuovere completo hashset in una sola volta in Redis

sto aggiungendo voci per impostare l'utilizzo di "HSET" e il recupero di tutte le voci alla volta utilizzando "HGETALL"

ora, voglio svuotare questo set hash, ma non v'è alcun comando come "HDELALL"

così io sto usando "dEL" per rimuovere il nome del set di hash per sé, in questo caso ho il fuoco il comando come questo -

DEL match/123/result

Potrebbe trovare solo questo approccio per rimuovere tutto in una volta. C'è qualche altra soluzione?

+3

No, e questo è ciò che ci si aspetta di fare. Il valore vuoto non esiste in Redis. Un hash vuoto o nessun hash è lo stesso per Redis. –

+0

@Didier Spezia: grazie mille. – Pranav

+0

@Pranav La mia risposta è di aiuto? Se sì, per favore accettalo altrimenti chiedi via se qualcosa non è chiaro –

risposta

2

Ecco un modo ruby-based per rimuovere tutte le chiavi in ​​un hash tramite un unico, richiesta di pipeline:

def hdelall(key) 
    r = Redis.new 
    keys = r.hgetall(key).keys 
    r.pipelined do 
    keys.each do |k| 
     r.hdel key, k 
    end 
    end 
end 
2

Se si dispone di una lista di chiavi quindi è forse possibile utilizzare hdel with multiple keys ma avrei certamente raccomandare di non usarlo poiché ha una complessità di O (N).

Con Redis di default non permette la funzione chiara all'interno di un hashet quindi dovrete usare del

43

Se si desidera eliminare o svuotare l'hash 'myhash'.

Si prega di utilizzare il seguente comando:

redis-cli 

redis> del myhash 

Spero che possa risolvere il problema.

+2

Ha funzionato per me. grazie –

+1

ottimo, se ti aiuta allora segna la risposta come accettata. –

+0

Scusa se non ho fatto la domanda. Quindi non posso accettarlo come risposta :) –

0

questo dovrebbe funzionare in Python (da "Redis in azione" libro)

all_keys = list(conn.hgetall('some_hash_name').keys()) 
conn.hdel('some_hash_name', *all_keys) 
Problemi correlati