我在 redis 名称中有一个哈希集为 = "match/123/result"
我正在使用“HSET”添加要设置的条目,并使用“HGETALL”一次检索所有条目
现在,我想刷新这个哈希集,但是没有像“HDELALL”这样的命令
所以我使用“DEL”来删除哈希集名称本身,在这种情况下我会触发这样的命令 -
DEL match/123/result
只能找到这种方法来一次删除所有内容。还有其他解决方案吗?
我在 redis 名称中有一个哈希集为 = "match/123/result"
我正在使用“HSET”添加要设置的条目,并使用“HGETALL”一次检索所有条目
现在,我想刷新这个哈希集,但是没有像“HDELALL”这样的命令
所以我使用“DEL”来删除哈希集名称本身,在这种情况下我会触发这样的命令 -
DEL match/123/result
只能找到这种方法来一次删除所有内容。还有其他解决方案吗?
如果要删除或刷新“myhash”哈希。
请使用以下命令:
redis-cli
redis> del myhash
希望它能解决问题。
这是一种基于 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
如果你有一个键列表,那么你也许可以使用带有多个键的 hdel 但我当然建议不要使用它,因为它的复杂度为 O(N)。
默认情况下,redis 不允许在 hashet 中使用 clear 函数,因此您必须使用 del
这应该在 Python 中工作(来自“Redis in Action”一书)
all_keys = list(conn.hgetall('some_hash_name').keys())
conn.hdel('some_hash_name', *all_keys)
我们可以通过一次迭代来做到这一点:在我的例子中,我存储了一个哈希,其中key是我的“字段”,在value处,我存储了一个对象。所以你可以相应地改变。
Object.keys(cartData).forEach((field)=>{
redisClient.hdel("YOUR KEY",field);
});