palautus DECR

Palautus Decr



Redis Integer Manipulation

Merkkijonotyyppi on Redisin tarjoama perustavanlaatuisin tietotyyppi. Redis-merkkijonot pystyvät tallentamaan tekstejä, sarjoitettuja JSON-objekteja, kuvia, ääntä ja jopa numeerisia arvoja. Tässä oppaassa keskitymme numeerisiin arvoihin ja kokonaislukujen käsittelyyn. Redis ei tue erillisiä kokonaislukutietotyyppejä numeeristen tietojen säilyttämiseksi. Jos Redis-avain sisältää merkkijonon, joka voidaan esittää kokonaislukuna, Redis voi tulkita numeroarvot 10 kantalukuna 64-bittisinä etumerkillisinä kokonaislukuina.


Numeroiden manipulointi on erittäin hyödyllinen ominaisuus missä tahansa tietokannassa. Redis tarjoaa useita hyödyllisiä operaatioita työskennelläksesi kokonaislukutyypeillä, kuten INCR, DECR, INCRBY jne. Tässä oppaassa selitetään yksityiskohtaisesti DECR-komento, joka toimii kokonaislukutyypeillä.







DECR:n komento

DECR-komento otetaan käyttöön tiettyyn avaimeen tallennettua numeroarvoa pienentämään yhdellä. Tämä toimii vain merkkijonoarvoilla, jotka voidaan esittää 10-kantaisena 64-bittisenä kokonaislukuna. DECR-komento antaa virheen ei-merkkijonoarvoille tai merkkijonoarvoille, joita ei voida esittää kokonaislukuina.



Seuraava on DECR-komennon syntaksi:



DECR-avain


Avain: Avain, joka sisältää merkkijonon arvon.





DECR-komento palauttaa tuloksena olevan etumerkillisen kokonaisluvun vähennystoiminnon jälkeen. Jos määritettyä avainta ei ole, komento asettaa arvoksi 0 ja pienentää sitä sitten yhdellä. Virhe heitetään myös, kun arvo on ei-merkkijono tai sitä ei voida esittää 64-bittisenä etumerkillisenä kokonaislukuna. Tämä komento toimii jatkuvalla aikakompleksisuudella (O(1)), joka on erittäin nopea.

Käyttötapaus – Vähennä pelaajan terveyttä verkkopelissä

Oletetaan online-peli, jossa jokaisen pelaajan terveys kasvaa yhdellä, kun medi-paketti paljastetaan. Samalla tavalla terveys heikkenee yhdellä, jos pelaaja kaatuu tai toinen pelaaja osuu siihen.



Ihanteellinen ehdokas pelaajan terveyden tallentamiseen on Redis-merkkijonotyyppi, johon voimme tallentaa terveyden kokonaislukuna. Luodaan avain health:playerID:1 ja aseta sen arvoksi 10. Voimme käyttää SET-komentoa seuraavasti:

aseta health:playerID: 1 10



Voimme käyttää GET-komentoa tarkistaaksemme osoitteeseen tallennetun arvon health:playerID:1.

saada terveys:playerID: 1



Oletetaan, että pelaaja, jolla on ID 1, saa osuman ja terveyttä pitäisi alentaa yhdellä. DECR-komentoa voidaan käyttää seuraavasti:

decr health:playerID: 1


Kuten odotettiin, DECR-komento tulostaa päivitetyn arvon pienennystoiminnon jälkeen seuraavan kuvan mukaisesti:


Voimme myös tarkastaa avaimeen tallennetun arvon health:playerID:1 GET-komennolla.

saada terveys:playerID: 1



Arvo laski odotetusti yhdellä.

DECR-operaattori on voimassa myös negatiivisten lukujen kanssa. Tallennetaan uusi negatiivinen numeerinen arvo avaimeen negatiivinen:arvo1 .

aseta negatiivinen:arvo1 -3


Voimme tarkistaa arvon GET-komennolla seuraavasti:

saada negatiivinen:arvo1



Seuraava komento näyttää kuinka DECR-komentoa käytetään avaimessa negatiivinen:arvo1:

decr negatiivinen:arvo1


DECR-komento ei-kokonaislukuarvoille

Joissakin reunatapauksissa yritetään käyttää DECR-komentoa Redis-avaimessa, jossa on ei-merkkijonotietotyyppi tai merkkijono, jota ei voida esittää kokonaislukuna. DECR-komento aiheuttaa virheen näissä tapauksissa seuraavan esimerkin mukaisesti:

aseta notAnIntergerVal Hei


'Hei' on teksti, jota ei voi muuntaa etumerkityksi kokonaisluvuksi. Joten DECR-komento aiheuttaa virheen, jos kutsumme sitä tätä näppäintä vastaan.

decr notAnIntergerVal


DECR-komento ei-olemassa oleville avaimille

Joissakin tapauksissa saatat kutsua DECR-komentoa avaimella, jota ei ole Redis-tietovarastossa. Joten komento luo määritetyn avaimen ja asettaa sen arvoksi kokonaisluku 0. Samalla arvoa pienennetään yhdellä.

decr ei-olemassa oleva-avain


Kuten odotettiin, lähtö on -1.


Kaiken kaikkiaan DECR-komento on erittäin hyödyllinen laskurien toteuttamiseen matalan viiveen sovelluksissa.

Johtopäätös

Yhteenvetona voidaan todeta, että DECR on yksi komennoista, jotka toimivat numeroarvoilla, jotka on tallennettu tiettyyn Redis-avaimeen. Redis ei tue erillistä kokonaislukutietotyyppiä. Joten merkkijonotyyppiä käytetään myös numeeristen arvojen säilyttämiseen. Kuten tarkasteltuna, jos merkkijonon arvo voidaan esittää 64-bittisenä etumerkillisenä kokonaislukuna, DECR-komentoa voidaan käyttää sen arvon pienentämiseen. Mikä tärkeintä, se toimii jatkuvalla aikamonimutkaisuudella. Myös DECR-komentoa käytetään laajalti laskurien toteuttamiseen.