2013-05-15 10 views
24

Mam mieszania ustawiony w nazwach Redis As = „match/123/Result”Usuń kompletny hashset naraz w REDiS

dodaję wpisy, aby ustawić za pomocą „HUstaw” i pobierania wszystkich wpisów w czasie korzystania „HGETALL”

teraz chcę, aby wypłukać ten zestaw hash, ale nie ma polecenia jak „HDELALL”

więc używam „DEL” aby usunąć skrótu nazwy wyznaczyła sobie w tym przypadku I ogień polecenie w ten sposób -

DEL match/123/result

Można znaleźć tylko takie podejście, aby usunąć wszystko naraz. Czy istnieje inne rozwiązanie?

+3

No, i to jest to, czego oczekuje się zrobić. Pusta wartość nie istnieje w Redis. Pusty hash lub bez skrótu jest taki sam dla Redis. –

+0

@Didier Spezia: wielkie dzięki. – Pranav

+0

@Pranav Czy moja odpowiedź pomaga? Jeśli tak, proszę zaakceptuj to inaczej zapytaj się, jeśli coś jest niejasne. –

Odpowiedz

2

Oto sposób rubin oparte usunąć wszystkie klucze w tablicy asocjacyjnej poprzez pojedynczy, potokowym życzenie:

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

Jeśli masz listę kluczy wtedy być może używać hdel with multiple keys ale ja na pewno polecam aby go nie używać ponieważ ma złożoność O (N).

Domyślnie REDiS nie pozwala na wyraźną funkcję wewnątrz hashet więc będziesz musiał użyć del

43

Jeśli chcesz usunąć lub opróżnić „myhash” hash.

Proszę użyć poniższego polecenia:

redis-cli 

redis> del myhash 

nadzieję, że to rozwiąże problem.

+2

To zadziałało dla mnie. dzięki –

+1

super, jeśli to pomoże, proszę oznaczyć odpowiedź jako zaakceptowaną. –

+0

Przepraszam, że zadaję pytanie. Więc nie mogę zaakceptować tego jako odpowiedzi :) –

0

To powinno działać w Pythonie (od „Redis w działaniu” książka)

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