2016-12-27 9 views
0

私は100万の鍵を持つredisインスタンスを持っているとしましょう。キーにはチームIDと人物IDが含まれ、値にはそのチームと人物の関連付けに関する情報があります。例キー:接頭辞の一致パターンを含む赤いスキャンは、データベース内のすべてのキーをスキャンしますか?

team:1:person:123 
team:2:person:234 
team:2:person:345 
... 

私は与えられたチームのすべての人々を取得するためのパターンでscanを使用することができます。例えば、scan 0 match "team:123:person:*"は、チームになってみんなを開始するとスキャンがNキーの数はO(N)があるので、これは、ないチームの人々を反復するための効率的な方法であるように123

ですねデータベース。しかし、私は確認したい - その場合ですか?

ツリーインデックスを持つデータベースは、そのプレフィックスを持つキーを使用してツリーの小さなセクションをスキャンするだけで済みます。

すべてをスキャンすると、チーム内の人々をすばやく繰り返したい場合は、チームIDの下に人物IDのセットを格納する必要があります。ような何か:

sset team:2:people 234 345 ... 

答えて

2

しかし、私が確認したい - ということは、ケースですか?

これは確かです。

ストアまさにあなたがすべきだチームID

下の人のIDのセット。しかし、いったんそのセットが大きくなりすぎると、SMEMBERSは高価な操作になる可能性がある(したがって、全体的なパフォーマンスが急がれます)。それが本当に問題になる場合は、代わりにSSCANを使用してゆっくりと検索してください。

関連する問題