2013-05-15 8 views
24
私が「一致/ 123 /結果」私は「HSET」を使用して設定するためのエントリを追加して使用して、一度にすべてのエントリを取得しています

Redisの

=としてRedisの名に設定されたハッシュを持っています

に一度の完全なHashSetのを削除「HGETALL」今

は、私は、このハッシュセットをフラッシュしたいのですが、「HDELALL」のようなコマンドはありません

ので、私は火、この場合には、ハッシュセット名自体を削除するには、「DEL」を使用していますこのようなコマンド -

すべてを一度に削除するには、この方法のみがあります。 他に解決策はありますか?ここで

+3

いいえ(「アクションでRedisの」本から)Pythonで動作するはずですし、これはあなたが行うことに期待しているものです。 Redisに空の値は存在しません。空のハッシュまたはハッシュが全くないのは、Redisの場合と同じです。 –

+0

@Didier Spezia:ありがとう。 – Pranav

+0

@Pranav私の答えは助けてくれますか?はいの場合はそれを受け入れてくださいそれ以外の場合は、何かが不明な場合は遠ざかります。 –

答えて

2

は、単一の、パイプライン化された要求を介しハッシュ内のすべてのキーを削除するにはルビーベースの方法です:あなたはキーのリストを持っている場合は

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)の複雑さを持っているので、を使用しないことをお勧めします。あなたが削除したり、「myhash」ハッシュをフラッシュしたい場合はデル

43

を使用する必要がありますので、デフォルトのRedisのことで

はhashet内部の明確な機能を許可していません。

以下のコマンドを使用してください:

redis-cli 

redis> del myhash 

を、それは問題を解決することを願っています。

+2

それは私のために働いた。ありがとう –

+1

偉大な、それはあなたの答えをマークとして受け入れるようにしてください。 –

+0

申し訳ありませんが、私は質問をしません。だから私は答えとしてそれを受け入れることはできません:) –

0

これは

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