2016-04-05 9 views
1

Ich versuche zu ermitteln, auf welche Weise doppelte Listen zu verfolgen sind.Speichern von doppelten Listen in redis

Zur Zeit habe ich Strings, die nicht Beispiel dupliziert werden sollte

superduper duplicate 333 
superduper duplicate 555 
superduper 557 

ich verfolgen möchten, dass „superduper Duplikat“ 333 ist die gleiche wie 555. Wenn ein Duplikat gefunden wird, ich muss nur beide 333 verfolgen und 555 zusammen und es können mehr als 2 Duplikate gefunden werden.

Jeder Artikel hat eine ID-Nummer, mit der identifiziert werden kann, welcher der beiden gefunden wurde.

Wenn ich eine sortierte Liste oder Set verwende kann ich nicht einfach das ID-Feld mit der Zeichenfolge speichern. Wenn ich eine Liste verwende, kann sie die ID-Felder nicht speichern. Ich habe nicht in Score-Set geschaut.
Ich verwende ein Multithread-Programm, so kann ich nicht auf Reihenfolge der Einsätze abhängen.

Alle Ideen für eine Struktur, die mir helfen würde, diese Informationen in Redis zu speichern.

+0

"Wenn ich als Hash speichern, überschreite ich die 1000-Schwelle und es verursacht große CPU" beziehen Sie sich auf IDs in einem Hash? – Rabea

+0

Hash-Felder in einem Hash – Jason

+0

Vielleicht etwas fehlt, habe ich verstanden, dass die Zeichenfolgen Schlüssel in Redis sind und Sie versuchen, die doppelten IDs in Hashes zu indizieren, aber was ist die 1000 Schwelle, die Sie erreichen? Gemäß diesem https://groups.google.com/forum/#!topic/redis-db/eArHCH9kHKA ist das Limit Ihr RAM. – Rabea

Antwort

0

Hier ist die Lösung, die ich gefunden habe. Ich bin offen für jeden mit einer besseren Idee.

Ich habe eine doppelte Liste, die eine Punktzahl (zset) die Zeichenfolge und ID zu dieser Zeichenfolge speichert.

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 

Dann speichere ich doppelte Informationen in einer anderen Liste

DuplicatesListId (Set) 
- 333 
- 123 

Dann behalte ich erstellen & eine Liste aller IDs, die zusätzliche Abbildung doppelte IDs haben.

DuplicateId:333 (Set) 
- 555 

DuplicateId:123 (Set) 
- 999 

Dies ermöglicht es mir, alle Artikel in DuplicatesListId nachzuschlagen und erhalten und dann jede doppelte Informationen erhalten einen bestimmten Schlüssel verwenden, weil ich ursprünglich nicht die ID kennen, die doppelte war. Die Liste "Duplikate" (zset) ist dann temporär, um zu verfolgen, welche Elemente sich in der Dupliste befinden und die entsprechende ID hat.

Verwandte Themen