我有一個哈希在redis的名稱作爲=「匹配/ 123 /結果」在redis的
我添加條目使用「HSET」來設置和使用在時間檢索所有的條目設定一次移除完整的HashSet 「HGETALL」
現在,我想刷新這個哈希集合,但沒有命令,如「HDELALL」
所以我用「DEL」刪除自身的哈希集名稱,在這種情況下我火像這樣的命令 -
DEL match/123/result
只能找到這種方法來一次刪除所有內容。 有沒有其他解決方案?
我有一個哈希在redis的名稱作爲=「匹配/ 123 /結果」在redis的
我添加條目使用「HSET」來設置和使用在時間檢索所有的條目設定一次移除完整的HashSet 「HGETALL」
現在,我想刷新這個哈希集合,但沒有命令,如「HDELALL」
所以我用「DEL」刪除自身的哈希集名稱,在這種情況下我火像這樣的命令 -
DEL match/123/result
只能找到這種方法來一次刪除所有內容。 有沒有其他解決方案?
下面是一個基於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
如果你有鍵列表,那麼你或許可以用hdel with multiple keys 但我一定會建議不要使用它,因爲它具有O(N)的複雜性。
默認的Redis不允許hashet內部清除功能,所以你將不得不使用德爾
如果你想刪除或刷新「myhash」哈希值。
請使用以下命令:
redis-cli
redis> del myhash
希望它會解決這個問題。
它爲我工作。謝謝 –
太棒了,如果它對你有幫助,那麼請將答案標記爲已接受。 –
對不起,我問這個問題。所以我不能接受它作爲回答:) –
這應該在Python工作(摘自「的Redis在行動」一書)
all_keys = list(conn.hgetall('some_hash_name').keys())
conn.hdel('some_hash_name', *all_keys)
不,這是你應該做的是什麼。 Redis中不存在空值。對於Redis來說,一個空的散列或者沒有散列是一樣的。 –
@Didier Spezia:非常感謝。 – Pranav
@Pranav我的回答有幫助嗎?如果是,那麼請接受它,否則要求離開,如果有什麼不清楚 –