2016-04-05 4 views
1

重複するリストをどのように追跡するかを判断しようとしています。重複が見つかったら重複したリストを赤字で保存する

現在、私は例

superduper duplicate 333 
superduper duplicate 555 
superduper 557 

重複すべきではない文字列は、私は333を「superduper複製」することを追跡するしているが、555と同じである私は、両方の333を追跡する必要があり、 2つ以上の重複が見つかることがあります。

各アイテムには、重複が見つかったID番号が記載されています。

ソートされたリストまたはセットを使用すると、idフィールドを文字列とともに簡単に保存できません。 リストを使用している場合、IDフィールドは格納できません。 私はスコアセットを調べていません。
私はマルチスレッドプログラムを使用しているので、挿入の順序に依存することはできません。

この情報をRedisに保存するのに役立つ構造のアイデア。

+0

「ハッシュとして保存した場合、1000のしきい値を超え、それがメジャーCPUを引き起こします」という場合、ハッシュのIDを参照していますか? – Rabea

+0

ハッシュフィールドが1つのハッシュ内にある – Jason

+0

何かが見つからないことがあります。文字列がRedisのキーであり、ハッシュ内の重複IDのインデックスを作成しようとしていますが、到達している1000のしきい値は何ですか?このhttps://groups.google.com/forum/#!topic/redis-db/eArHCH9kHKAによると、制限はあなたのRAMです。 – Rabea

答えて

0

ここに私が思いついた解決策があります。私はより良いアイデアで誰にでも開いています。

私は、文字列とIDをその文字列に格納するスコア(zset)である複製のリストを持っています。

Duplicates (zset) 
- "superduper duplicate" 333 
- "superduper duplicate" 555 *wouldn't be added but here for example purposes 
- "testing" 123 
- "tester" 101 
- "testing" 999 *wouldn't be added but here for example purposes 

その後、私はその後、私は&を作成

DuplicatesListId (Set) 
- 333 
- 123 

別のリストに重複した情報を保存するには、追加のマッピング重複IDを持つすべてのIDのリストを保持します。

DuplicateId:333 (Set) 
- 555 

DuplicateId:123 (Set) 
- 999 

これは私が見上げるとDuplicatesListIdのすべての項目を取得し、その後、私はもともと、重複したIDがわからないので、特定のキーを使用して、各重複する情報を取得することができます。 "Duplicates"(zset)リストは、どのアイテムがdupリストにあり、それに対応するidを追跡する目的で一時的です。

関連する問題