החזר DECR

Hhzr Decr



מניפולציה של מספרים שלמים של Redis

סוג המחרוזת הוא סוג הנתונים הבסיסי ביותר שמציעה Redis. מחרוזות Redis מסוגלות לאחסן טקסטים, אובייקטי JSON מסודרים, תמונות, אודיו ואפילו ערכים מספריים. במדריך זה נתמקד בערכים המספריים ובמניפולציה של מספרים שלמים. Redis אינו תומך בסוגי הנתונים המספרים השלמים הנפרדים כדי להחזיק את הנתונים המספריים. אם מפתח Redis מכיל מחרוזת שיכולה להיות מיוצגת כמספר שלם, Redis יכולה לפרש את ערכי המספרים כבסיס 10 64 סיביות עם סימנים שלמים.


מניפולציית המספרים היא תכונה שימושית ביותר שיש בכל מסד נתונים. Redis מציעה מספר פעולות שימושיות לעבודה על סוגי מספרים שלמים כגון INCR, DECR, INCRBY וכו'. במדריך זה מוסברת בפירוט פקודת DECR הפועלת על סוגי מספרים שלמים.







פקודת DECR

הפקודה DECR מוצגת כדי להקטין ערך מספר המאוחסן במפתח נתון באחד. זה עובד רק על ערכי מחרוזת שיכולים להיות מיוצגים כמספר שלם של בסיס 10 64 סיביות. הפקודה DECR זורקת שגיאה עבור ערכים שאינם מחרוזים או ערכי מחרוזת שלא ניתן לייצג כמספרים שלמים.



להלן התחביר של הפקודה DECR:



מקש DECR


מַפְתֵחַ: המפתח שמחזיק את ערך המחרוזת.





הפקודה DECR מחזירה את המספר השלם בסימן שנוצר לאחר פעולת ההפחתה. אם המפתח שצוין לא קיים, הפקודה מגדירה את הערך ל-0 ולאחר מכן מקטין אותו באחד. כמו כן, נגרמת שגיאה כאשר הערך אינו מחרוזת או שלא ניתן לייצג אותו כמספר שלם בסימן 64 סיביות. פקודה זו פועלת על מורכבות זמן קבועה (O(1)) שהיא מהירה במיוחד.

מקרה שימוש - הפחת את בריאות השחקן במשחק מקוון

הבה נניח משחק מקוון שבו בריאותו של כל שחקן גדלה באחד כאשר נחשפת חבילת מדיה. באופן דומה, הבריאות יורדת באחד אם השחקן נופל או נפגע על ידי שחקן אחר.



המועמד האידיאלי לאחסון בריאותו של שחקן הוא סוג מחרוזת Redis שבה נוכל לאחסן את הבריאות כמספר שלם. בואו ניצור מפתח health:playerID:1 ולהגדיר את הערך שלו ל-10. נוכל להשתמש בפקודה SET באופן הבא:

מַעֲרֶכֶת health:playerID: 1 10



אנו יכולים להשתמש בפקודה GET כדי לאמת את הערך המאוחסן בו health:playerID:1.

קבל בריאות:playerID: 1



נניח שהשחקן עם תעודת הזהות 1 נפגע ויש להפחית את הבריאות באחד. ניתן להשתמש בפקודה DECR באופן הבא:

decr health:playerID: 1


כצפוי, הפקודה DECR מדפיסה את הערך המעודכן לאחר פעולת ההפחתה כפי שמוצג באיור הבא:


כמו כן, אנו יכולים לבדוק את הערך המאוחסן במפתח health:playerID:1 עם הפקודה GET.

קבל בריאות:playerID: 1



כצפוי, הערך ירד באחד.

האופרטור DECR תקף גם עם מספרים שליליים. בואו נאחסן ערך מספרי שלילי חדש במפתח negative:value1 .

מַעֲרֶכֶת negative:value1 -3


אנו יכולים לבדוק את הערך באמצעות הפקודה GET באופן הבא:

get negative:value1



הפקודה הבאה מראה כיצד נעשה שימוש בפקודת DECR במקש negative:value1:

decr negative:value1


פקודת DECR על ערכים שאינם שלמים

ישנם כמה מקרים של קצה כאשר אנו מנסים להשתמש בפקודה DECR במפתח Redis שמכיל סוג נתונים שאינו מחרוזת או מחרוזת שאינה יכולה להיות מיוצגת כמספר שלם. הפקודה DECR זורקת שגיאה באותם מקרים כפי שמוצג בדוגמה הבאה:

מַעֲרֶכֶת notAnIntergerVal שלום


ה'שלום' הוא טקסט שלא ניתן להמיר למספר שלם חתום. אז, הפקודה DECR מעלה שגיאה אם ​​אנו קוראים לה כנגד המפתח הזה.

decr notAnIntergerVal


פקודת DECR על מקשים לא קיימים

במקרים מסוימים, ייתכן שתקרא לפקודת DECR על מקש שאינו קיים במאגר הנתונים של Redis. אז, הפקודה יוצרת את המפתח שצוין ומגדירה את הערך שלו למספר שלם 0. במקביל, הערך ירד באחד.

decr לא קיים-מפתח


כצפוי, הפלט הוא -1.


בסך הכל, פקודת DECR שימושית מאוד ליישום המונים ביישומי חביון נמוך.

סיכום

לסיכום, DECR היא אחת הפקודות הפועלות על ערכים מספריים המאוחסנים במפתח Redis נתון. Redis אינו תומך בסוג נתונים נפרד של מספר שלם. אז, סוג המחרוזת משמש גם כדי להחזיק את הערכים המספריים. כפי שנבדק, אם ניתן לייצג את ערך המחרוזת כמספר שלם בסימן 64 סיביות, ניתן להשתמש בפקודת DECR כדי להקטין את ערכו. והכי חשוב, הוא פועל על מורכבות זמן קבועה. כמו כן, פקודת DECR נמצאת בשימוש נרחב ליישום המונים.