3

Redisに多数の大きなソート済みセット(5m〜25m)があり、それらのセットの組み合わせで表示される最初の要素を取得したいと思います。たとえば、20セットあり、セット1、5、7、および12を取得して、それらのセットのみの最初の交差のみを取得したいとしました。

ZINTERSTOREの後に「ZRANGEfoo00」が続くと、すべての交差を計算して最初の交差を返すため、私が必要とするより多くの作業を実行しているように見えます。すべての交差点を計算する必要がない代替ソリューションはありますか?

4

1 に答える 1

2

これをお勧めしますが、直接的なネイティブの代替手段はありません。

そのメンバーが要素であるハッシュを作成します。ソート済みセットの 1 つに追加するたびに、関連するメンバーをインクリメントします ( を使用HINCRBY)。もちろん、要素が追加しようとしているソートされたセットにまだ存在していないことを確認した後でのみ、インクリメントを行います。

こうすることで、どの要素が 4 つのセットに含まれているかをすぐに知ることができます。

更新:考え直したところ、値が 4 ( O(n) ) のアイテムを見つけるためにハッシュをクエリするのはコストがかかりすぎる可能性があります。もう 1 つのオプションは、別の並べ替えセットを作成することです。そのメンバーは要素であり、そのスコアが増加し (前に説明したように、ただし を使用ZINCRBY)、スコア 4 のすべての要素を ( を使用して) すばやく取得できますZRANGEBYSCORE

于 2012-04-08T12:46:39.177 に答える