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?
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.
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
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
Vous pouvez utiliser Hdel * pour supprimer toutes les valeurs de hachage de cette clé
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)