64

我在 redis 名称中有一个哈希集为 = "match/123/result"

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

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

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

DEL match/123/result

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

4

5 回答 5

123

如果要删除或刷新“myhash”哈希。

请使用以下命令:

redis-cli

redis> del myhash

希望它能解决问题。

于 2015-12-01T13:45:57.820 回答
4

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

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
于 2015-08-13T22:08:20.957 回答
4

如果你有一个键列表,那么你也许可以使用带有多个键的 hdel 但我当然建议不要使用它,因为它的复杂度为 O(N)。

默认情况下,redis 不允许在 hashet 中使用 clear 函数,因此您必须使用 del

于 2015-08-15T15:16:09.090 回答
3

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

all_keys = list(conn.hgetall('some_hash_name').keys())
conn.hdel('some_hash_name', *all_keys)
于 2017-10-13T23:31:45.463 回答
0

我们可以通过一次迭代来做到这一点:在我的例子中,我存储了一个哈希,其中key是我的“字段”,在value处,我存储了一个对象。所以你可以相应地改变。

Object.keys(cartData).forEach((field)=>{
    redisClient.hdel("YOUR KEY",field);
});
            
于 2020-07-16T06:48:14.730 回答