In redis abfragen

8

Kürzlich lerne ich Redis und ehrlich gesagt sehr beeindruckt und sterbend, es zu benutzen. Eines der Dinge, die mich belästigen, ist "Wie frage ich Redis". Um genau zu sein versuche ich folgendes zu lösen:

Angenommen, ich habe Millionen Hashwerte wie unten gespeichert.

%Vor%

Bitte beachten Sie, dass es in vielen Hashes viele Schlüssel gibt, die ich nur 4 gezeigt habe. Jetzt möchte ich Datensätze in einem bestimmten Datumsbereich finden, nach Benutzer, nach Ressource oder nach einem Benutzer in einem bestimmten Zeitraum.

Ich vermute, dass es redis spezifische Muster gibt, um solche Daten abzurufen. Ich bin ein Python-Programmierer. Ich habe mir redisco (ohm port) angeschaut, der ein wenig Query unterstützt, aber ich bin mir nicht sicher, ob es alle Daten und dann Filter in Python bekommt.

    
Shekhar 27.09.2010, 07:17
quelle

2 Antworten

10

Bei Redis ist es am besten zu verstehen, welche Art von Abfragestrukturen Sie über Ihre Daten haben möchten, bevor Sie sich entscheiden, wie Sie diese speichern möchten.

Wenn Sie z. B. eine Datumsbereichsabfrage für eine Datengruppe durchführen möchten, können Sie diese Daten als sortierte Menge speichern, wobei die Schlüssel die Datenelemente sind, die Sie abfragen möchten, und das Ergebnis ist ein Unix-Zeitstempel .

In Ihrem obigen Beispiel könnte ich Ihren Beispiel-Hash wie folgt speichern:

%Vor%

Das heißt, ich hätte viele Vorwärts- und Rückwärts-Maps, abhängig von den Suchmustern, die ich unterstützen möchte.

    
rlotun 27.09.2010, 08:09
quelle
7

Die Abfragen, die Sie erwähnen, hängen stark von der Zeit ab. In diesem Fall wäre es ratsam, einen sortierten Satz zu verwenden. Sie können den Datumsstempel als Wert für jeden Eintrag verwenden.

Sie könnten beispielsweise Folgendes tun:

%Vor%

Um alles abzurufen:

%Vor%

oder

%Vor%

Um die Indizes eines Bereichs zu erhalten:

%Vor%

Für Abfragen, die auf einem Hash-Schlüsselwert basieren, gibt es eine nützliche Ergänzung zu redis, die die Verwendung von in lua geschriebenen Skripten erlaubt. Sie könnten einfach ein einfaches Lua-Skript in einem Python-Heredoc schreiben und die redisse.eval-Methode verwenden, um das Skript an redis zu übergeben. Das Skript könnte eine Schleife sein, die basierend auf dem gesuchten Wert filtert.

    
Lloyd Moore 25.05.2011 09:06
quelle

Tags und Links