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.