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.
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ó:
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.
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:
A következő parancs megmutatja, hogyan használják a DECR parancsot a kulcson 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.
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.