在redis中一次删除整个哈希集

flseospp  于 2022-11-28  发布在  Redis
关注(0)|答案(5)|浏览(156)

我在Redis中有一个名为“match/123/result”的哈希值。
我使用HSET将条目添加到该散列中,并使用HGETALL一次检索所有条目。
我想刷新此哈希,但没有类似“HDELALL”(在redis-cli中)的命令。
因此,我使用DEL来删除散列名称,如下所示:
DEL match/123/result
我只能找到这种方法来一次性删除所有内容(哈希值及其内容),还有其他解决方案吗?

0mkxixxg

0mkxixxg1#

如果要删除或刷新“myhash”哈希。
请使用下面的命令:

redis-cli

redis> del myhash

希望它能解决问题。

i86rm4rw

i86rm4rw2#

下面是一个基于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
wljmcqd8

wljmcqd83#

如果你有一个键的列表,那么你可能可以使用hdel with multiple keys,但是我肯定会建议不要使用它因为它的复杂度是O(N)。
默认情况下,redis不允许在hashet中使用clear函数,所以你必须使用del

pkmbmrz7

pkmbmrz74#

这应该可以在Python中使用(来自“Redis in Action”一书)

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

rks48beu5#

我们可以通过一次迭代来实现:在我的例子中,我存储了一个哈希值,其中key是我的“字段”,而在value处,我存储了一个对象。

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

相关问题