Hoe implementeer je het laatste schema in Redis? Is het mogelijk?
Redis is schemaloos . Laten we noemen wat je nodig hebt een aanpak voor gegevensopslag .
Een mogelijke benadering is het gebruik van HSET
of HMSET
om deze JSON-objecten per id toe te voegen, waarbij hun id de sleutel is en de JSON-tekst is de waarde . We noemen deze hash als users:byid
.
Dit is het eerste deel van het probleem. Nu kunt u objecten per id . krijgen .
Het volgende probleem is dat u objecten wilt ophalen in een bereik van wat u rangschikking noemt . Om dit te krijgen, moet je je objecten in een gesorteerde set opslaan met behulp van ZADD
. Gesorteerde sets zijn gesorteerd op score, en items worden met een score opgeslagen . Het klinkt perfect voor jouw gebruik!
Eigenlijk ga je de object-ID's in de hele gesorteerde set opslaan:
zadd users:byranking 10 1 5 2
... waar 10
is de score (d.w.z. uw werkelijke rangschikkingswaarde) en 1 de id enzovoort.
Dus, hoe filter je items op ranking? ZRANGEBYSCORE
gebruiken :
- Door te rangschikken tussen 0 en 10, exclusief 10.
zrangebyscore users:byranking 0 (10
- Door te rangschikken tussen 0 en 10, inclusief 10.
zrangebyscore users:byranking 0 10
De zogenaamde ZRANGEBYSCORE
geeft u de ID's van opgehaalde gebruikers. Hoe krijg je hun JSON-tekst? HMGET
gebruiken :
HMGET users:byid 1 2
...die zowel gebruikers met id . zal krijgen 1
en 2
, als 10
ranking is inclusief.