2012-05-08 8 views
18

私はセット(またはそれが良いとすればソートされたセットまたはリスト)を持っているとします。は100から1000文字列です。Redis: "通常の"セットとソートされたセットを交差させる方法?

次に、並べ替えられたセットB、さらに多くの文字列、たとえば100万個があります。

Cは(もちろんのストリングの)とBの交点であるべきです。

XがすべてのCにあるすべてのタプル(X、SCORE_OF_X_IN_B)が必要です。

私は2つのアイデアを得た:

  1. Interstore
    • 店Aあらゆる持つソートセットは、D
    • にされて0
    • interstoreスコアD
    • のすべての項目は、Dを削除します
  2. 私のクライアントプログラムの開発における
  3. GET zscoreすべての文字列のための

以上のクライアント

  • ループで単純なループ1. Redisの側にあまりにも多くのオーバーヘッドがありますがは(のために書く必要があり例。 redisページには、かなり高い時間の複雑さもあります。http://redis.io/commands/zinterstore)2.は| A |データベース接続に適していて、良い選択ではありません。

    たぶん私はzscoreようですが、文字列の任意の数で動作しますRedisの/ LUAスクリプトを書くことができますが、私のホスティング事業者は、スクリプトを許可するかどうかはわからないんだけど...

    だから、僕はお願いしたかったですそれで、スクリプトなしでエレガントで高速なソリューションが利用可能ならば!

答えて