powrót DECR

Powrot Decr



Manipulacja liczbami całkowitymi Redis

Typ string to najbardziej podstawowy typ danych, który oferuje Redis. Ciągi Redis mogą przechowywać teksty, serializowane obiekty JSON, obrazy, dźwięk, a nawet wartości liczbowe. W tym przewodniku skupimy się na wartościach liczbowych i manipulowaniu liczbami całkowitymi. Redis nie obsługuje oddzielnych typów danych całkowitych do przechowywania danych liczbowych. Jeśli klucz Redis zawiera ciąg, który może być reprezentowany jako liczba całkowita, Redis może interpretować wartości liczbowe jako 64-bitowe liczby całkowite ze znakiem base-10.


Manipulacja liczbami jest niezwykle przydatną funkcją w każdej bazie danych. Redis oferuje kilka przydatnych operacji do pracy z typami całkowitymi, takimi jak INCR, DECR, INCRBY itp. W tym przewodniku szczegółowo wyjaśniono polecenie DECR, które działa na typach całkowitych.







Polecenie DECR

Polecenie DECR jest wprowadzane w celu zmniejszenia wartości liczbowej przechowywanej pod danym kluczem o jeden. Działa to tylko w przypadku wartości łańcuchowych, które mogą być reprezentowane jako 64-bitowa liczba całkowita o podstawie 10. Polecenie DECR zgłasza błąd dla wartości niebędących ciągami lub wartości ciągów, które nie mogą być reprezentowane jako liczby całkowite.



Poniżej znajduje się składnia polecenia DECR:



klawisz DECR


Klucz: Klucz, który przechowuje wartość ciągu.





Polecenie DECR zwraca wynikową liczbę całkowitą ze znakiem po operacji dekrementacji. Jeśli określony klucz nie istnieje, polecenie ustawia wartość na 0, a następnie zmniejsza ją o jeden. Ponadto zgłaszany jest błąd, gdy wartość nie jest ciągiem lub nie może być reprezentowana jako 64-bitowa liczba całkowita ze znakiem. To polecenie działa ze stałą złożonością czasową (O(1)), która jest niezwykle szybka.

Przypadek użycia – Zmniejsz zdrowie gracza w grze online

Załóżmy grę online, w której zdrowie każdego gracza zwiększa się o jeden po odkryciu apteczki. Podobnie zdrowie spada o jeden, jeśli gracz upadnie lub zostanie uderzony przez innego gracza.



Idealnym kandydatem do przechowywania stanu zdrowia gracza jest typ ciągu Redis, w którym możemy przechowywać stan zdrowia jako liczbę całkowitą. Stwórzmy klucz zdrowie:ID gracza:1 i ustaw jej wartość na 10. Możemy użyć polecenia SET w następujący sposób:

ustawić zdrowie:ID gracza: 1 10



Możemy użyć polecenia GET, aby zweryfikować wartość przechowywaną w zdrowie:ID gracza:1.

uzyskaj zdrowie:ID gracza: 1



Powiedzmy, że gracz z ID 1 zostanie trafiony, a zdrowie powinno zostać zmniejszone o jeden. Polecenia DECR można używać w następujący sposób:

decr health:playerID: 1


Zgodnie z oczekiwaniami polecenie DECR drukuje zaktualizowaną wartość po operacji zmniejszania, jak pokazano na poniższym rysunku:


Możemy również sprawdzić wartość przechowywaną w kluczu zdrowie:ID gracza:1 za pomocą polecenia GET.

uzyskaj zdrowie:ID gracza: 1



Zgodnie z oczekiwaniami wartość spadła o jeden.

Operator DECR obowiązuje również w przypadku liczb ujemnych. Zapiszmy nową ujemną wartość liczbową pod kluczem ujemna:wartość1 .

ustawić ujemna:wartość1 -3


Możemy sprawdzić wartość za pomocą polecenia GET w następujący sposób:

uzyskaj ujemną: wartość1



Poniższe polecenie pokazuje, jak polecenie DECR jest używane na klawiszu ujemna:wartość1:

dekr ujemny: wartość1


Polecenie DECR dla wartości niecałkowitych

Istnieją pewne skrajne przypadki, gdy próbujemy użyć polecenia DECR na kluczu Redis, który przechowuje typ danych niebędący ciągiem lub ciąg, który nie może być reprezentowany jako liczba całkowita. Polecenie DECR zgłasza błąd w tych przypadkach, jak pokazano w poniższym przykładzie:

ustawić notAnIntergerVal Witam


„Hello” to tekst, którego nie można przekonwertować na liczbę całkowitą ze znakiem. Tak więc polecenie DECR zgłasza błąd, jeśli wywołamy je przeciwko temu kluczowi.

decr notAnIntergerVal


Polecenie DECR na nieistniejących kluczach

W niektórych przypadkach możesz wywołać polecenie DECR na kluczu, który nie istnieje w magazynie danych Redis. Tak więc polecenie tworzy określony klucz i ustawia jego wartość na liczbę całkowitą 0. Jednocześnie wartość jest zmniejszana o jeden.

decr nieistniejący-klucz


Zgodnie z oczekiwaniami wynik wynosi -1.


Ogólnie rzecz biorąc, polecenie DECR jest bardzo przydatne do implementacji liczników w aplikacjach o małych opóźnieniach.

Wniosek

Podsumowując, DECR jest jednym z poleceń operujących na wartościach liczbowych przechowywanych pod danym kluczem Redis. Redis nie obsługuje oddzielnego typu danych całkowitych. Tak więc typ ciągu służy również do przechowywania wartości liczbowych. Jak zbadano, jeśli wartość ciągu może być reprezentowana jako 64-bitowa liczba całkowita ze znakiem, polecenie DECR może być użyte do zmniejszenia jego wartości. Co najważniejsze, działa ze stałą złożonością czasową. Ponadto polecenie DECR jest szeroko stosowane do implementacji liczników.