2013-05-15 41 views
24

我有一個哈希在redis的名稱作爲=「匹配/ 123 /結果」在redis的

我添加條目使用「HSET」來設置和使用在時間檢索所有的條目設定一次移除完整的HashSet 「HGETALL」

現在,我想刷新這個哈希集合,但沒有命令,如「HDELALL」

所以我用「DEL」刪除自身的哈希集名稱,在這種情況下我火像這樣的命令 -

DEL match/123/result

只能找到這種方法來一次刪除所有內容。 有沒有其他解決方案?

+3

不,這是你應該做的是什麼。 Redis中不存在空值。對於Redis來說,一個空的散列或者沒有散列是一樣的。 –

+0

@Didier Spezia:非常感謝。 – Pranav

+0

@Pranav我的回答有幫助嗎?如果是,那麼請接受它,否則要求離開,如果有什麼不清楚 –

回答

2

下面是一個基於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

如果你有鍵列表,那麼你或許可以用hdel with multiple keys 但我一定會建議不要使用它,因爲它具有O(N)的複雜性。

默認的Redis不允許hashet內部清除功能,所以你將不得不使用德爾

43

如果你想刪除或刷新「myhash」哈希值。

請使用以下命令:

redis-cli 

redis> del myhash 

希望它會解決這個問題。

+2

它爲我工作。謝謝 –

+1

太棒了,如果它對你有幫助,那麼請將答案標記爲已接受。 –

+0

對不起,我問這個問題。所以我不能接受它作爲回答:) –

0

這應該在Python工作(摘自「的Redis在行動」一書)

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