Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Elemente in Redis filtern

Wie implementieren Sie das letzte Schema in Redis? Ist das möglich?

Redis ist schemalos . Nennen wir das, was Sie brauchen, einen Datenspeicheransatz .

Ein möglicher Ansatz ist die Verwendung von HSET oder HMSET um diese JSON-Objekte nach ID hinzuzufügen, wobei ihre ID der Schlüssel ist und der JSON-Text ist der Wert . Wir nennen diesen Hash users:byid .

Dies ist der erste Teil des Problems. Jetzt können Sie Objekte nach ID erhalten .

Das nächste Problem ist nun, dass Sie Objekte in einem Bereich abrufen möchten, den Sie Ranking nennen . Um dies zu erreichen, müssen Sie Ihre Objekte mit ZADD in einer sortierten Menge speichern . Sortierte Sätze sind sortiert nach Punktzahl, und Artikel werden mit einer Punktzahl gespeichert . Es klingt perfekt für Ihren Anwendungsfall!

Eigentlich werden Sie die Objekt-IDs in der gesamten sortierten Menge speichern:

zadd users:byranking 10 1 5 2

... wobei 10 ist der Score (d. h. Ihr aktueller Ranking-Wert) und 1 die id und so weiter.

Also, wie filtern Sie Artikel nach Rangfolge? Mit ZRANGEBYSCORE :

  • Durch Ranking zwischen 0 und 10, ausgenommen 10. zrangebyscore users:byranking 0 (10
  • Durch Ranking zwischen 0 und 10, einschließlich 10. zrangebyscore users:byranking 0 10

Der sogenannte ZRANGEBYSCORE gibt Ihnen die IDs der abgerufenen Benutzer. Wie erhalten Sie ihren JSON-Text? Mit HMGET :

 HMGET users:byid 1 2

...was beide Benutzer mit id erhält 1 und 2 , falls 10 Ranking ist inklusive.