vissza DECR

Vissza Decr



Redis Integer Manipulation

A karakterlánctípus a Redis által kínált legalapvetőbb adattípus. A Redis karakterláncok szövegek, sorosított JSON-objektumok, képek, hangok és még számértékek tárolására is képesek. Ebben az útmutatóban a numerikus értékekre és az egész számok manipulálására fogunk összpontosítani. A Redis nem támogatja a különálló egész adattípusokat a numerikus adatok tárolására. Ha egy Redis-kulcs olyan karakterláncot tartalmaz, amely egész számként ábrázolható, a Redis a számértékeket 10 alapú 64 bites előjeles egész számként tudja értelmezni.


A számmanipuláció rendkívül hasznos funkció bármely adatbázisban. A Redis számos hasznos műveletet kínál az egész számtípusokon, például INCR, DECR, INCRBY stb. végzett munkához. Ebben az útmutatóban az egész számtípusokon működő DECR parancsot részletesen ismertetjük.







A DECR parancs

A DECR parancsot az adott kulcsnál tárolt számérték eggyel való csökkentésére vezetik be. Ez csak olyan karakterlánc-értékeknél működik, amelyek 10-es 64 bites egész számként ábrázolhatók. A DECR parancs hibát jelez a nem karakterlánc-értékeknél vagy a karakterlánc-értékeknél, amelyeket nem lehet egész számként ábrázolni.



A következő a DECR parancs szintaxisa:



DECR gomb


Kulcs: A karakterlánc értékét hordozó kulcs.





A DECR parancs az eredményül kapott előjeles egész számot adja vissza a csökkentési művelet után. Ha a megadott kulcs nem létezik, a parancs 0-ra állítja az értéket, majd eggyel csökkenti. Akkor is hibaüzenet jelenik meg, ha az érték nem karakterlánc, vagy nem ábrázolható 64 bites előjelű egész számként. Ez a parancs állandó időbonyolítással (O(1)) működik, ami rendkívül gyors.

Használati eset – Csökkentse a játékosok egészségét egy online játékban

Tételezzünk fel egy online játékot, ahol minden játékos egészségi állapota eggyel nő, amikor megjelenik egy medi-csomag. Hasonlóképpen, az életerő eggyel csökken, ha a játékos elesik vagy megüti egy másik játékos.



Az ideális jelölt egy játékos egészségének tárolására egy Redis karakterlánc típus, ahol az életerőt egész számként tárolhatjuk. Hozzunk létre egy kulcsot health:playerID:1 és állítsa az értékét 10-re. A SET parancsot a következőképpen használhatjuk:

készlet health:playerID: 1 10



A GET paranccsal ellenőrizhetjük a címen tárolt értéket health:playerID:1.

szerezz egészséget:playerID: 1



Tegyük fel, hogy az 1-es azonosítójú játékost eltalálják, és az életerőt eggyel csökkenteni kell. A DECR parancs a következőképpen használható:

decr health:playerID: 1


Ahogy az várható volt, a DECR parancs kiírja a frissített értéket a csökkentési művelet után, az alábbi ábrán látható módon:


Ezenkívül ellenőrizhetjük a kulcson tárolt értéket health:playerID:1 a GET paranccsal.

szerezz egészséget:playerID: 1



A várakozásoknak megfelelően az érték eggyel csökkent.

A DECR operátor negatív számokkal is érvényes. Tároljunk egy új negatív számértéket a billentyűnél negatív:érték1 .

készlet negatív:érték1 -3


Az értéket a GET paranccsal a következőképpen ellenőrizhetjük:

kap negatív:érték1



A következő parancs megmutatja, hogyan használják a DECR parancsot a kulcson negatív:érték1:

decr negatív:érték1


A DECR parancs a nem egész értékekre

Vannak olyan éles esetek, amikor megpróbáljuk a DECR parancsot olyan Redis kulcson használni, amely nem karakterlánc típusú adattípust vagy olyan karakterláncot tartalmaz, amelyet nem lehet egész számként ábrázolni. A DECR parancs ilyen esetekben hibát ad, amint az a következő példában látható:

készlet notAnIntergerVal Hello


A „Hello” egy olyan szöveg, amely nem konvertálható előjeles egész számmá. Tehát a DECR parancs hibát jelez, ha ezt a kulcsot hívjuk.

decr notAnIntergerVal


A DECR parancs nem létező kulcsokra

Bizonyos esetekben előfordulhat, hogy olyan kulcson hívja meg a DECR parancsot, amely nem létezik a Redis adattárban. Tehát a parancs létrehozza a megadott kulcsot, és annak értékét egész számra állítja 0-ra. Ugyanakkor az érték eggyel csökken.

decr nem létező kulcs


A várakozásoknak megfelelően a kimenet -1.


Összességében a DECR parancs nagyon hasznos a számlálók implementálásához alacsony késleltetésű alkalmazásokban.

Következtetés

Összefoglalva, a DECR azon parancsok egyike, amelyek egy adott Redis-kulcson tárolt számértékekkel működnek. A Redis nem támogatja a különálló egész adattípust. Tehát a karakterlánc típust használják a számértékek tárolására is. Amint azt vizsgáltuk, ha a karakterlánc értéke 64 bites előjeles egész számként ábrázolható, akkor a DECR paranccsal csökkenthető az érték. A legfontosabb, hogy állandó időbonyolítással működik. Ezenkívül a DECR parancsot széles körben használják a számlálók megvalósítására.