retour DECR

Retour Decr



Redis Integer Manipulatie

Het stringtype is het meest fundamentele gegevenstype dat Redis biedt. Redis-strings kunnen teksten, geserialiseerde JSON-objecten, afbeeldingen, audio en zelfs numerieke waarden opslaan. In deze gids zullen we ons concentreren op de numerieke waarden en de manipulatie van gehele getallen. Redis ondersteunt niet de afzonderlijke gegevenstypen voor gehele getallen om de numerieke gegevens te bewaren. Als een Redis-sleutel een tekenreeks bevat die kan worden weergegeven als een geheel getal, kan Redis de getalwaarden interpreteren als gehele getallen met 64-bits teken met grondtal 10.


Het manipuleren van nummers is een uiterst nuttige functie om in elke database te hebben. Redis biedt verschillende handige bewerkingen om met integer-typen te werken, zoals INCR, DECR, INCRBY, enz. In deze handleiding wordt het DECR-commando dat werkt op integer-typen in detail uitgelegd.







Het DECR-commando

Het DECR-commando wordt geïntroduceerd om een ​​getalswaarde die op een bepaalde toets is opgeslagen met één te verlagen. Dit werkt alleen op tekenreekswaarden die kunnen worden weergegeven als een 64-bits geheel getal met grondtal 10. De opdracht DECR genereert een fout voor niet-tekenreekswaarden of tekenreekswaarden die niet kunnen worden weergegeven als gehele getallen.



Het volgende is de syntaxis van het DECR-commando:



DECR-toets


Sleutel: De sleutel die de tekenreekswaarde bevat.





De opdracht DECR retourneert het resulterende geheel getal met teken na de decrementbewerking. Als de opgegeven sleutel niet bestaat, stelt de opdracht de waarde in op 0 en verlaagt deze vervolgens met één. Er wordt ook een fout gegenereerd wanneer de waarde een niet-tekenreeks is of niet kan worden weergegeven als een 64-bits geheel getal met teken. Deze opdracht werkt op constante tijdcomplexiteit (O(1)) die extreem snel is.

Use Case - Verlaag de gezondheid van de speler in een online game

Laten we een online spel aannemen waarbij de gezondheid van elke speler met één wordt verhoogd wanneer een medi-pack wordt onthuld. Evenzo neemt de gezondheid met één af als de speler valt of wordt geraakt door een andere speler.



De ideale kandidaat om de gezondheid van een speler op te slaan is een Redis-reekstype waar we de gezondheid als een geheel getal kunnen opslaan. Laten we een sleutel maken gezondheid:speler-ID:1 en stel de waarde in op 10. We kunnen het SET-commando als volgt gebruiken:

set gezondheid:speler-ID: 1 10



We kunnen het GET-commando gebruiken om de waarde te verifiëren die is opgeslagen op gezondheid:speler-ID:1.

krijg gezondheid:speler-ID: 1



Laten we zeggen dat de speler met ID 1 wordt geraakt en dat de gezondheid met één moet worden verlaagd. Het DECR-commando kan als volgt worden gebruikt:

decr gezondheid:speler-ID: 1


Zoals verwacht, drukt het DECR-commando de bijgewerkte waarde af na de verlagingsbewerking, zoals weergegeven in de volgende afbeelding:


We kunnen ook de waarde inspecteren die is opgeslagen bij key gezondheid:speler-ID:1 met het GET-commando.

krijg gezondheid:speler-ID: 1



Zoals verwacht daalde de waarde met één.

De DECR-operator is ook geldig met negatieve getallen. Laten we een nieuwe negatieve numerieke waarde opslaan bij de toets negatief:waarde1 .

set negatief:waarde1 -3


We kunnen de waarde als volgt inspecteren met het GET-commando:

negatief krijgen:waarde1



Het volgende commando laat zien hoe het DECR-commando op de toets wordt gebruikt: negatief:waarde1:

decr negatief:waarde1


Het DECR-commando voor niet-gehele waarden

Er zijn enkele randgevallen wanneer we proberen de DECR-opdracht te gebruiken op een Redis-sleutel die een niet-tekenreeksgegevenstype bevat of een tekenreeks die niet kan worden weergegeven als een geheel getal. De opdracht DECR genereert in die gevallen een fout, zoals in het volgende voorbeeld wordt getoond:

set notAnIntergerVal Hallo


De 'Hallo' is een tekst die niet kan worden geconverteerd naar een geheel getal met teken. Dus het DECR-commando geeft een fout als we het tegen deze sleutel aanroepen.

decr notAnIntergerVal


Het DECR-commando op niet-bestaande toetsen

In sommige gevallen kunt u de opdracht DECR aanroepen op een sleutel die niet bestaat in het Redis-gegevensarchief. De opdracht maakt dus de opgegeven sleutel en stelt de waarde in op geheel getal 0. Tegelijkertijd wordt de waarde met één verlaagd.

decr niet-bestaande-sleutel


Zoals verwacht is de output -1.


Over het algemeen is het DECR-commando erg handig om de tellers te implementeren in toepassingen met lage latentie.

Conclusie

Samengevat is DECR een van de commando's die werken op numerieke waarden die zijn opgeslagen onder een bepaalde Redis-toets. Redis ondersteunt geen afzonderlijk gegevenstype voor gehele getallen. Het stringtype wordt dus ook gebruikt om de numerieke waarden vast te houden. Zoals onderzocht, als de tekenreekswaarde kan worden weergegeven als een 64-bits geheel getal met teken, kan het DECR-commando worden gebruikt om de waarde ervan te verlagen. Het belangrijkste is dat het werkt op constante tijdcomplexiteit. Ook wordt het DECR-commando veel gebruikt om de tellers te implementeren.