ibalik ang DECR

Ibalik Ang Decr



Pagmamanipula ng Redis Integer

Ang uri ng string ay ang pinakapangunahing uri ng data na inaalok ng Redis. Ang mga string ng Redis ay may kakayahang mag-imbak ng mga text, serialized na JSON object, larawan, audio, at kahit na mga numerical na halaga. Sa gabay na ito, tututuon natin ang mga numerical na halaga at ang pagmamanipula ng mga integer. Hindi sinusuportahan ng Redis ang hiwalay na mga uri ng data ng integer para hawakan ang numerical na data. Kung ang isang Redis key ay naglalaman ng isang string na maaaring katawanin bilang isang integer, maaaring bigyang-kahulugan ng Redis ang mga halaga ng numero bilang base-10 64-bit signed integers.


Ang pagmamanipula ng numero ay isang lubhang kapaki-pakinabang na tampok na mayroon sa anumang database. Nag-aalok ang Redis ng ilang kapaki-pakinabang na operasyon upang gumana sa mga uri ng integer tulad ng INCR, DECR, INCRBY, atbp. Sa gabay na ito, ang DECR command na gumagana sa mga uri ng integer ay ipinaliwanag nang detalyado.







Ang DECR Command

Ang utos ng DECR ay ipinakilala upang bawasan ang isang halaga ng numero na naka-imbak sa isang ibinigay na susi ng isa. Gumagana lang ito sa mga value ng string na maaaring katawanin bilang base-10 64-bit integer. Ang utos ng DECR ay naghagis ng isang error para sa mga hindi string na halaga o mga halaga ng string na hindi maaaring katawanin bilang mga integer.



Ang sumusunod ay ang syntax ng DECR command:



DECR key


Susi: Ang susi na nagtataglay ng halaga ng string.





Ibinabalik ng utos ng DECR ang nagreresultang nilagdaang integer pagkatapos ng pagpapababa. Kung ang tinukoy na key ay hindi umiiral, ang utos ay nagtatakda ng halaga sa 0 at pagkatapos ay bawasan ito ng isa. Gayundin, ang isang error ay itinapon kapag ang halaga ay isang non-string o hindi maaaring katawanin bilang isang 64-bit signed integer. Gumagana ang command na ito sa patuloy na pagiging kumplikado ng oras(O(1)) na napakabilis.

Use Case – Bawasan ang Kalusugan ng Manlalaro sa isang Online na Laro

Ipagpalagay natin ang isang online na laro kung saan ang kalusugan ng bawat manlalaro ay nadaragdagan ng isa kapag ang isang medi-pack ay nahayag. Katulad nito, ang kalusugan ay bumababa ng isa kung ang manlalaro ay bumagsak o natamaan ng isa pang manlalaro.



Ang perpektong kandidato upang mag-imbak ng kalusugan ng isang manlalaro ay isang uri ng string ng Redis kung saan maaari naming iimbak ang kalusugan bilang isang integer. Gumawa tayo ng susi kalusugan:playerID:1 at itakda ang halaga nito sa 10. Magagamit natin ang utos ng SET tulad ng sumusunod:

itakda kalusugan:playerID: 1 10



Magagamit natin ang GET command para i-verify ang value na nakaimbak sa kalusugan:playerID:1.

makakuha ng kalusugan:playerID: 1



Sabihin nating natamaan ang manlalaro na may ID 1 at dapat bawasan ng isa ang kalusugan. Ang utos ng DECR ay maaaring gamitin tulad ng sumusunod:

decr health:playerID: 1


Tulad ng inaasahan, ang DECR command ay nagpi-print ng na-update na halaga pagkatapos ng pagpapababa ng pagpapatakbo tulad ng ipinapakita sa sumusunod na figure:


Gayundin, maaari naming suriin ang halaga na nakaimbak sa key kalusugan:playerID:1 gamit ang GET command.

makakuha ng kalusugan:playerID: 1



Gaya ng inaasahan, bumaba ang halaga ng isa.

Ang DECR operator ay may bisa din sa mga negatibong numero. Mag-imbak tayo ng bagong negatibong numerical value sa susi negatibo:value1 .

itakda negatibo:value1 -3


Maaari naming suriin ang halaga gamit ang GET command tulad ng sumusunod:

makakuha ng negatibo:value1



Ipinapakita ng sumusunod na utos kung paano ginagamit ang utos ng DECR sa susi negatibo:value1:

decr negatibo:value1


Ang DECR Command sa Non-Integer Values

Mayroong ilang mga gilid na kaso kapag sinubukan naming gamitin ang DECR na command sa isang Redis key na mayroong isang non-string na uri ng data o isang string na hindi maaaring katawanin bilang isang integer. Ang utos ng DECR ay nagtatapon ng isang error sa mga kasong iyon tulad ng ipinapakita sa sumusunod na halimbawa:

itakda notAnIntergerVal Hello


Ang 'Hello' ay isang text na hindi maaaring i-convert sa isang sign integer. Kaya, ang utos ng DECR ay nagtataas ng isang error kung tatawagin natin ito laban sa key na ito.

decr notAnIntergerVal


Ang DECR Command on Non-Existing Keys

Sa ilang sitwasyon, maaari mong tawagan ang DECR command sa isang key na wala sa Redis data store. Kaya, ang command ay lumilikha ng tinukoy na key at itinakda ang halaga nito sa integer 0. Kasabay nito, ang halaga ay nababawasan ng isa.

decr non-existing-key


Tulad ng inaasahan, ang output ay -1.


Sa pangkalahatan, ang utos ng DECR ay lubhang kapaki-pakinabang upang ipatupad ang mga counter sa mababang latency na mga aplikasyon.

Konklusyon

Sa buod, ang DECR ay isa sa mga utos na gumagana sa mga numerical na halaga na nakaimbak sa isang ibinigay na Redis key. Hindi sinusuportahan ng Redis ang isang hiwalay na uri ng data ng integer. Kaya, ang uri ng string ay ginagamit upang hawakan din ang mga numerical na halaga. Tulad ng napagmasdan, kung ang halaga ng string ay maaaring katawanin bilang isang 64-bit signed integer, ang DECR command ay maaaring gamitin upang bawasan ang halaga nito. Pinakamahalaga, ito ay nagpapatakbo sa patuloy na pagiging kumplikado ng oras. Gayundin, ang utos ng DECR ay malawakang ginagamit upang ipatupad ang mga counter.