redis
Gesorteerde sets
Zoeken…
Invoering
Het Sorted Set-gegevenstype in Redis is een geordende versie van het Set-gegevenstype. Een gesorteerde set van Redis bestaat uit een verzameling unieke leden. Elk lid in de gesorteerde set kan worden beschouwd als een paar bestaande uit het lid en een score. De score wordt gebruikt om de leden binnen de set in oplopende volgorde te ordenen.
Syntaxis
- ZADD-toets [NX | XX] [CH] [INCR] scorelid [scorelid ...]
- ZCARD-toets
- ZCOUNT sleutel min max
- ZLEXCOUNT toets min max
Opmerkingen
De officiële documentatie voor gesorteerde sets is te vinden op de site Redis.io .
Gesorteerde sets worden soms zsets genoemd. Als u de opdracht TYPE gebruikt voor een gesorteerde set-toets, wordt de waarde zset geretourneerd.
Items toevoegen aan een gesorteerde set
Redis biedt de ZADD-opdracht om items toe te voegen aan een gesorteerde set. De basisvorm van het ZADD-commando is het opgeven van de set, het item dat moet worden toegevoegd en de score. Als ik bijvoorbeeld een bestelde set van mijn favoriete eten wilde maken (van de minste tot de meeste), kon ik een van de volgende gebruiken:
zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer
Of anders:
zadd favs 1 apple 2 pizza 3 chocolate 4 beer
De ZADD-functie werkt zeer vergelijkbaar met de ongesorteerde ingestelde functie SADD. Het resultaat van de opdracht ZADD is het aantal items dat is toegevoegd. Dus na het maken van mijn set zoals hierboven, als ik opnieuw probeerde ZADD-bier:
ZADD favs 4 beer
Ik zou een 0-resultaat krijgen, als ik zou besluiten dat ik chocolade beter vind dan bier, zou ik het kunnen uitvoeren:
ZADD favs 3 beer 4 chocolate
om mijn voorkeuren bij te werken, maar ik zou nog steeds een 0-retourresultaat krijgen omdat zowel bier als chocolade al in de set zitten.
Items in een gesorteerde set tellen
Redis biedt drie opdrachten om de items binnen een gesorteerde set te tellen: ZCARD, ZCOUNT, ZLEXCOUNT.
Het ZCARD-commando is de basistest voor de kardinaliteit van een set. (Het is analoog aan het SCARD-commando voor sets.). ZCARD retourneert het aantal leden van een set. De volgende code uitvoeren om items aan een set toe te voegen:
zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer
ZCard uitvoeren:
zcard favs
geeft een waarde van 4 terug.
Met de opdrachten ZCOUNT en ZLEXCOUNT kunt u een subset van de items in een gesorteerde set tellen op basis van een bereik van waarden. Met ZCOUNT kunt u items binnen een bepaald bereik van scores tellen en met ZLEXCOUNT kunt u het aantal items binnen een bepaald lexografisch bereik tellen.
Met behulp van onze set hierboven:
zcount favs 2 5
zou een 3 teruggeven, omdat er drie items (pizza, chocolade, bier) zijn met scores tussen 2 en 5 inclusief.
ZLEXCOUNT is ontworpen om te werken met sets waarbij elk item dezelfde score heeft, geforceerd en geordend op de verkiezingsnamen. Als we een set hebben gemaakt zoals:
zadd favs 1 apple
zadd favs 1 pizza
zadd favs 1 chocolate
zadd favs 1 beer
we kunnen ZLEXCOUNT gebruiken om het aantal elementen in het bijzonder lexografisch bereik te krijgen (dit wordt gedaan door byte-gewijs te vergelijken met behulp van de memcpy-functie).
zlexcount favs [apple (chocolate
zou 2 teruggeven, omdat twee elementen (appel, bier) vallen binnen het bereik appel (inclusief) en chocolade (exclusief). We kunnen ook beide uiteinden inclusief maken:
zlexcount favs [apple [chocolate
en krijg het resultaat 3.