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.
Oletetaan, että pelaaja, jolla on ID 1, saa osuman ja terveyttä pitäisi alentaa yhdellä. DECR-komentoa voidaan käyttää seuraavasti:
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.
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:
Seuraava komento näyttää kuinka DECR-komentoa käytetään avaimessa 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-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.