sql >> Database >  >> NoSQL >> Redis

Elementen filteren in Redis

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.




  1. Predis geeft 'Fout bij het lezen van regel van server'

  2. Een-een- en een-veel-referenties verwijderen - Mongoose

  3. MongoDB $weeklyUpdate #65 (15 april 2022):GDELT, Mongoose en Hackathon Time!

  4. Procedure:gebruikersauthenticatie en autorisatie inschakelen in Apache HBase