vrátiť DECR

Vratit Decr



Manipulácia s celým číslom Redis

Typ reťazca je najzákladnejším typom údajov, ktorý Redis ponúka. Reťazce Redis sú schopné ukladať texty, serializované objekty JSON, obrázky, zvuk a dokonca aj číselné hodnoty. V tejto príručke sa zameriame na číselné hodnoty a manipuláciu s celými číslami. Redis nepodporuje samostatné celočíselné typy údajov na uchovávanie číselných údajov. Ak kľúč Redis obsahuje reťazec, ktorý môže byť reprezentovaný ako celé číslo, Redis môže interpretovať číselné hodnoty ako základné 10 64-bitové celé čísla so znamienkom.


Manipulácia s číslami je mimoriadne užitočná funkcia v každej databáze. Redis ponúka niekoľko užitočných operácií na prácu s celočíselnými typmi, ako sú INCR, DECR, INCRBY atď. V tejto príručke je podrobne vysvetlený príkaz DECR, ktorý pracuje s celočíselnými typmi.







Príkaz DECR

Príkaz DECR je zavedený na zníženie číselnej hodnoty, ktorá je uložená na danom kľúči, po jednej. Funguje to len na hodnotách reťazcov, ktoré možno reprezentovať ako 64-bitové celé číslo so základnou hodnotou 10. Príkaz DECR vyvolá chybu pre nereťazcové hodnoty alebo reťazcové hodnoty, ktoré nemožno reprezentovať ako celé čísla.



Nasleduje syntax príkazu DECR:



kľúč DECR


kľúč: Kľúč, ktorý obsahuje hodnotu reťazca.





Príkaz DECR vráti výsledné celé číslo so znamienkom po operácii zníženia. Ak zadaný kľúč neexistuje, príkaz nastaví hodnotu na 0 a potom ju zníži o jednu. Chyba sa vyvolá aj vtedy, keď hodnota nie je reťazec alebo ju nemožno reprezentovať ako 64-bitové celé číslo so znamienkom. Tento príkaz pracuje s konštantnou časovou zložitosťou (O(1)), ktorá je extrémne rýchla.

Prípad použitia – zníženie zdravia hráča v online hre

Predpokladajme, že ide o online hru, v ktorej sa zdravie každého hráča zvýši o jedno, keď sa odhalí balík medicinál. Podobne sa zdravie zníži o jedno, ak hráč padne alebo ho zasiahne iný hráč.



Ideálnym kandidátom na uloženie zdravia hráča je reťazec typu Redis, kde môžeme zdravie uložiť ako celé číslo. Vytvorme kľúč health:playerID:1 a jeho hodnotu nastavíme na 10. Príkaz SET môžeme použiť nasledovne:

nastaviť health:playerID: 1 10



Na overenie hodnoty uloženej na adrese môžeme použiť príkaz GET health:playerID:1.

získať zdravie:playerID: 1



Povedzme, že hráč s ID 1 dostane zásah a zdravie by sa malo znížiť o jeden. Príkaz DECR možno použiť nasledovne:

decr health:playerID: 1


Ako sa očakávalo, príkaz DECR vytlačí aktualizovanú hodnotu po operácii zníženia, ako je znázornené na nasledujúcom obrázku:


Môžeme tiež skontrolovať hodnotu uloženú v kľúči health:playerID:1 pomocou príkazu GET.

získať zdravie:playerID: 1



Podľa očakávania sa hodnota znížila o jednu.

Operátor DECR je platný aj so zápornými číslami. Uložme novú zápornú číselnú hodnotu do kľúča zápor:hodnota1 .

nastaviť zápor:hodnota1 -3


Hodnotu môžeme skontrolovať pomocou príkazu GET takto:

získať zápor:hodnota1



Nasledujúci príkaz ukazuje, ako sa na kľúči používa príkaz DECR negatívny:hodnota1:

decr negative:value1


Príkaz DECR pre neceločíselné hodnoty

Existuje niekoľko okrajových prípadov, keď sa pokúšame použiť príkaz DECR na kľúči Redis, ktorý obsahuje nereťazcový dátový typ alebo reťazec, ktorý nemožno reprezentovať ako celé číslo. Príkaz DECR vyvolá chybu v týchto prípadoch, ako je znázornené v nasledujúcom príklade:

nastaviť notAnIntergerVal Dobrý deň


„Ahoj“ je text, ktorý nemožno previesť na celé číslo so znamienkom. Takže príkaz DECR vyvolá chybu, ak ho zavoláme proti tomuto kľúču.

decr notAnIntergerVal


Príkaz DECR na neexistujúcich kľúčoch

V niektorých prípadoch môžete zavolať príkaz DECR na kľúči, ktorý neexistuje v úložisku údajov Redis. Príkaz teda vytvorí zadaný kľúč a nastaví jeho hodnotu na celé číslo 0. Zároveň sa hodnota zníži o jednotku.

dekr neexistujúci-kľúč


Podľa očakávania je výstup -1.


Celkovo je príkaz DECR veľmi užitočný na implementáciu počítadiel v aplikáciách s nízkou latenciou.

Záver

Stručne povedané, DECR je jedným z príkazov, ktoré pracujú s číselnými hodnotami, ktoré sú uložené v danom kľúči Redis. Redis nepodporuje samostatný typ celočíselných údajov. Typ reťazca sa teda používa aj na uchovávanie číselných hodnôt. Ako sme zistili, ak hodnotu reťazca možno reprezentovať ako 64-bitové celé číslo so znamienkom, príkaz DECR možno použiť na zníženie jej hodnoty. Najdôležitejšie je, že funguje na konštantnej časovej zložitosti. Príkaz DECR je tiež široko používaný na implementáciu počítadiel.