vrátit DECR

Vratit Decr



Redis Integer manipulace

Typ řetězce je nejzákladnějším datovým typem, který Redis nabízí. Řetězce Redis jsou schopny ukládat texty, serializované objekty JSON, obrázky, zvuk a dokonce i číselné hodnoty. V této příručce se zaměříme na číselné hodnoty a manipulaci s celými čísly. Redis nepodporuje samostatné celočíselné datové typy pro uložení číselných dat. Pokud klíč Redis obsahuje řetězec, který lze reprezentovat jako celé číslo, může Redis interpretovat číselné hodnoty jako základní 10 64bitová celá čísla se znaménkem.


Manipulace s čísly je velmi užitečná funkce v jakékoli databázi. Redis nabízí několik užitečných operací pro práci s celočíselnými typy, jako je INCR, DECR, INCRBY atd. V této příručce je podrobně vysvětlen příkaz DECR, který pracuje s celočíselnými typy.







Příkaz DECR

Příkaz DECR je zaveden pro snížení číselné hodnoty, která je uložena na daném klíči, po jedné. Toto funguje pouze na řetězcových hodnotách, které lze reprezentovat jako základní 10 64bitové celé číslo. Příkaz DECR vyvolá chybu pro neřetězcové hodnoty nebo řetězcové hodnoty, které nelze reprezentovat jako celá čísla.



Následuje syntaxe příkazu DECR:



DECR klíč


Klíč: Klíč, který obsahuje hodnotu řetězce.





Příkaz DECR vrátí výsledné celé číslo se znaménkem po operaci snížení. Pokud zadaný klíč neexistuje, příkaz nastaví hodnotu na 0 a poté ji sníží o jednu. Chyba je také vyvolána, když je hodnota neřetězcová nebo nemůže být reprezentována jako 64bitové celé číslo se znaménkem. Tento příkaz pracuje s konstantní časovou složitostí (O(1)), která je extrémně rychlá.

Případ použití – Snižte zdraví hráče v online hře

Předpokládejme online hru, kde se zdraví každého hráče zvýší o jedno, když je odhalen medi-pack. Podobně se zdraví sníží o jedno, pokud hráč padne nebo je zasažen jiným hráčem.



Ideálním kandidátem pro uložení zdraví hráče je typ řetězce Redis, kde můžeme zdraví uložit jako celé číslo. Vytvoříme klíč health:playerID:1 a jeho hodnotu nastavíme na 10. Příkaz SET můžeme použít následovně:

soubor health:playerID: 1 10



K ověření hodnoty uložené na adrese můžeme použít příkaz GET health:playerID:1.

získat zdraví:playerID: 1



Řekněme, že hráč s ID 1 dostane zásah a zdraví by se mělo snížit o jednu. Příkaz DECR lze použít následovně:

decr health:playerID: 1


Podle očekávání příkaz DECR vytiskne aktualizovanou hodnotu po operaci snížení, jak je znázorněno na následujícím obrázku:


Můžeme také zkontrolovat hodnotu uloženou v klíči health:playerID:1 pomocí příkazu GET.

získat zdraví:playerID: 1



Podle očekávání se hodnota snížila o jednu.

Operátor DECR je platný i se zápornými čísly. Uložme do klíče novou zápornou číselnou hodnotu negativní:hodnota1 .

soubor negativní:hodnota1 -3


Hodnotu můžeme zkontrolovat pomocí příkazu GET takto:

získat zápor:hodnota1



Následující příkaz ukazuje, jak se příkaz DECR používá na klíči negativní:hodnota1:

dekr negative:value1


Příkaz DECR pro neceločíselné hodnoty

Existují některé okrajové případy, kdy se snažíme použít příkaz DECR na klíči Redis, který obsahuje neřetězcový datový typ nebo řetězec, který nelze reprezentovat jako celé číslo. Příkaz DECR vyvolá chybu v těchto případech, jak ukazuje následující příklad:

soubor notAnIntergerVal Dobrý den


„Ahoj“ je text, který nelze převést na celé číslo se znaménkem. Takže příkaz DECR vyvolá chybu, pokud jej zavoláme proti tomuto klíči.

decr notAnIntergerVal


Příkaz DECR na neexistujících klíčích

V některých případech můžete zavolat příkaz DECR na klíči, který v datovém úložišti Redis neexistuje. Příkaz tedy vytvoří zadaný klíč a nastaví jeho hodnotu na celé číslo 0. Zároveň se hodnota sníží o jedničku.

decr neexistující-klíč


Podle očekávání je výstup -1.


Celkově je příkaz DECR velmi užitečný pro implementaci čítačů v aplikacích s nízkou latencí.

Závěr

Stručně řečeno, DECR je jedním z příkazů, které pracují s číselnými hodnotami, které jsou uloženy v daném klíči Redis. Redis nepodporuje samostatný celočíselný datový typ. Řetězcový typ se tedy používá i k uložení číselných hodnot. Jak bylo prozkoumáno, pokud lze hodnotu řetězce reprezentovat jako 64bitové celé číslo se znaménkem, lze ke snížení její hodnoty použít příkaz DECR. Nejdůležitější je, že funguje na konstantní časové složitosti. Také příkaz DECR je široce používán k implementaci čítačů.