2015-09-09 8 views

答えて

13

キーは、動作の仕方によって本番では実行されないコマンドとして特に言及されています。ここで必要なのは、あなたのキーのインデックスを作成することです。目的のパターンのキー名を保存するには、setを使用します。新しいweキーを追加するときに、その名前をセットに追加します。あなたがリストを必要とするとき

Set abc:parent1:child1 breakfast 
Sadd abc:parent1:index abc:parent1 

は次に:たとえば

Smembers abc:parent1 

は「悪」キーコマンドを使用して関連付けられた罰則や問題もなく、あなたのリストが表示されます。さらに、キー削除時にsremoveのエントリを削除します。また、1回の呼び出しでインデックスに含まれるキーの数を知ることができます。

キーの代わりにインデックスSCANを使用することは絶対に確実に避けなければなりません。キーを考慮する必要があるのは、デバッグスレーブを実行している場合だけです。デバッグスレーブを使用している唯一のプロセスはデバッグプロセスです。

+0

これはどうやって動作するのかよくわかりません。あなたの例では、実際には 'set abc:parent1:child1 breakfast'とし、' sadd abc:parent1 child1'ですか? – Automatico

+0

いいえ、OPは子供のみではなく親のレベルにしたいからです。 –

+0

質問を誤解しました。明確にしていただきありがとうございます。 – Automatico

3

コマンドKEYSパターン 同じのためにあなたを助ける見つけることができます。

例:

redis> MSET one 1 two 2 three 3 four 4 
OK 
redis> KEYS *o* 
1) "two" 
2) "one" 
3) "four" 

あなたの具体的な例については、以下のコマンドが動作します:

redis 127.0.0.1:6379> keys *parent[0-9] 
1) "abc:parent2" 
2) "abc:parent1" 

ここthe detailed description of the commandです。

更新:上記の提案は、あなたが所望の出力を得ることができますけれども他の人が述べたように、RedisのKEYSコマンドは悪です。 KEYSはブロックしており、レスポンスを準備する際に多くのRAMを消費する可能性があります。

通常のアプリケーションコードではKEYSを使用しないでください。キースペースのサブセットでキーを見つける方法を探している場合は、SCANまたはセットの使用を検討してください。

ありがとう本当のビルとItamar、私はより良い理解を得ました。

+2

'KEYS'は悪いです... –

+0

' permission:/ url1/[id:sub:write:]と 'permission:/ url1/id:^/] + ' – Natim

関連する問題