web-dev-qa-db-fra.com

Supprimer le hashset complet à la fois dans redis

J'ai un hachage défini dans les noms de redis comme = "match/123/result"

J'ajoute des entrées à définir avec "HSET" et récupère toutes les entrées à la fois avec "HGETALL"

maintenant, je veux vider cet ensemble de hachage, mais il n'y a pas de commande comme "HDELALL"

donc j'utilise "DEL" pour supprimer le nom du groupe de hachage lui-même, dans ce cas, je lance la commande comme ceci

DEL match/123/result

N'a pu trouver que cette approche pour tout supprimer en même temps ... Y a-t-il une autre solution?

35
Pranav

Si vous souhaitez supprimer ou effacer le hachage 'myhash'.

Veuillez utiliser la commande ci-dessous:

redis-cli

redis> del myhash

J'espère que cela résoudra le problème.

66
Aman Garg

Si vous avez une liste de clés, vous pouvez peut-être utiliser hdel avec plusieurs clés Mais je recommanderais certainement de ne pas l'utiliser car il présente une complexité de O (N).

Par défaut, redis n'autorise pas la fonction clear dans un hashet, vous devrez donc utiliser del

3
Basit Anwer

Voici un moyen basé sur Ruby pour supprimer toutes les clés d'un hachage via une requête unique en 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
Darren Hicks

Vous pouvez utiliser Hdel * pour supprimer toutes les valeurs de hachage de cette clé

0
sam22

Cela devrait fonctionner en Python (extrait du livre "Redis in Action")

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