在redis中一次删除完整的hashset

时间:2013-05-15 09:27:13

标签: redis

我在redis名称中使用哈希集= =“match / 123 / result”

我正在使用“HSET”添加条目并使用“HGETALL”一次检索所有条目

现在,我想刷新这个哈希集,但没有像“HDELALL”这样的命令

所以我使用“DEL”来删除哈希集名称本身,在这种情况下我像这样触发命令 -

DEL match/123/result

只能找到这种方法一次删除所有内容。 还有其他解决方案吗?

6 个答案:

答案 0 :(得分:70)

如果您想要删除或清除“myhash”'散列。

请使用以下命令:

redis-cli

redis> del myhash

希望它能解决问题。

答案 1 :(得分:3)

这是一种基于ruby的方法,通过单个流水线请求删除哈希中的所有键:

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 :(得分:3)

如果您有密钥列表,那么您可以使用hdel with multiple keys 但我肯定会建议不要使用它,因为它的复杂性为O(N)。

默认情况下,redis不允许在hashet中使用clear函数,所以你必须使用del

答案 3 :(得分:0)

这应该在Python中起作用(来自“Redis in Action”一书)

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

答案 4 :(得分:0)

您可以使用 hdel *删除此键上的所有哈希值

答案 5 :(得分:0)

我们可以执行一次迭代: 就我而言,我存储了一个散列,其中是我的“字段”,并以存储了一个对象。因此您可以进行相应的更改。

Object.keys(cartData).forEach((field)=>{
    redisClient.hdel("YOUR KEY",field);
});