In diesem Artikel wird anhand von Beispielen erläutert, wie Redis relationale Daten speichert und wie Matching-, Bereichs- und Fuzzy-Abfragen verwendet werden.
1. Speicherung relationaler Daten
Nehmen wir als Beispiel das Staff-Objekt in einer relationalen Datenbank oder einem Speichergitterprodukt wie GridGain (die unterste Ebene verwendet die Speichermodusspeicherung der H2-Datenbank). ), speichern wir die Daten des Objekts in Tabellenform. Da das Speichergitter basierend auf Objekten zwischengespeichert wird, ist eine zusätzliche Spalte (Staff-Spalte) erforderlich, um die Codierung des gesamten Objekts zu speichern, z. B. das serialisierte Binär- oder JSON-Format usw., damit es direkt an die Anwendung zurückgegeben werden kann Deserialisierung.
In Redis können wir die ID als eindeutige Kennung verwenden und sie mithilfe von drei Datenstrukturen speichern: Schlüsselwert, Hash und zSet. Der Schlüsselwert besteht darin, die ID und das gesamte Objekt zu speichern. Nachdem der ID-Bereich bestimmt wurde, kann das Objekt basierend darauf an den Client zurückgegeben werden.
2. Passende Abfrage
Die Verwendung von hget oder hmget der Hash-Tabelle kann dept='IT' oder dept in ('IT', 'QA ' ) Dies ist eine Abfrage mit exakter Übereinstimmung mit einem oder mehreren Werten. Nachdem Sie die ID-Liste erhalten haben, fragen Sie den Schlüsselwert ab, um das Objekt abzurufen.
3. Bereichsabfrage
Da wir das Alter als Score von zSet speichern und der Wert die ID ist, können wir die zrangeByScore-Methode von zSet verwenden, um den Wert des Scores innerhalb von a zu erhalten bestimmtes Intervall.
4. Fuzzy-Abfrage
Nach Redis 2.8.9 hat zSet eine sehr nützliche Methode hinzugefügt, zrangeByLex. Wir speichern die Werte im Format name:id Verwenden Sie zrangeByLex. Rufen Sie den Wert eines Buchstabens innerhalb eines bestimmten Bereichs ab. Beispiel: zrangeByLex-Name [A, (F, Sie können Allen, Aaron, Carter abfragen.
5. Paging-Abfrage
Gleichzeitig unterstützt zrangeByLex auch Paging-Abfragen und die Syntax ist ähnlich wie „Limit start, offset“. hat viele Einschränkungen.
Zum Beispiel:
1) Es ist nicht möglich, eine Abfrage mit mehreren Bedingungen zu implementieren, z. B. Alter>25 UND einem Namen wie „A%“. Dazu benötigen Sie mehrere Befehle und berechnen die Vereinigung oder den Schnittpunkt.
2) Fuzzy-Abfragen auf Chinesisch sind schwieriger.
Weitere Redis-Kenntnisse finden Sie in der Spalte
Redis-Einführungs-Tutorial.
Das obige ist der detaillierte Inhalt vonEinführung in relationale Abfragen in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!