הקדמה
Redis הוא מאגר נתונים בקרה על-פי ערכים בזיכרון מתוך המקור הפתוח. הוא מגיע עם מספר פקודות שיכולות לעזור באיתור ותיקון בעיות. בגלל הייחוד של Redis כמאגר נתונים בזיכרון, רוב הפקודות מתמקדות בניהול הזיכרון, אך יש גם פקודות אחרות שיכולות לספק תמצית על מצב השרת שלך. המדריך הזה יספק פרטים על איך להשתמש בכמה מהפקודות הללו כדי לעזור באבחון ופתרון בעיות שעלולות להתרחש במהלך השימוש ב-Redis.
איך להשתמש במדריך זה
המדריך הזה כתוב כמפת עזר עם דוגמאות עצמאיות. אנו ממליצים לך לעבור לכל סעיף שקשור למשימה שאתה מנסה להשלים.
הפקודות שמוצגות במדריך זה נבדקו על שרת Ubuntu 22.04 המריץ את גרסת Redis 6.0.16. כדי להתקין סביבה דומה, תוכל לעקוב אחר שלב 1 של המדריך שלנו על איך להתקין ולאבטח את Redis על Ubuntu 22.04. נדגים איך הפקודות האלו מתנהגות על ידי הרצתן באמצעות redis-cli
, ממשק השורת פקודה של Redis. אם אתה משתמש בממשק Redis שונה — לדוגמה, Redli — יתכן שפלט מסוים של פקודות מסוימות ישתנה.
באפשרותך גם לספק מופע מנוהל של מסד נתונים Redis לבדיקת הפקודות הללו, אך בהתאם לרמת השליטה המותרת על ידי ספק מסד הנתונים שלך, ייתכן שקצת הפקודות במדריך זה לא יעבדו כפי שתוארו. כדי לספק מסד נתונים מנוהל של DigitalOcean, עקוב אחר תיעוד המוצר של מסדי הנתונים המנוהלים שלנו. לאחר מכן, עליך להתקין את Redli או להגדיר טונל TLS כדי להתחבר למסד הנתונים המנוהל באמצעות TLS.
פתרון בעיות הקשורות לזיכרון
שימוש בזיכרון
מציין כמה זיכרון משמש כרגע על ידי מפתח יחיד. הוא מקבל את שם המפתח כארגומנט ומחזיר את מספר הבתים שהוא משתמש בהם. תחילה, הגדר משתנה לדוגמה:
- set key_meaningOfLife "Food"
לאחר מכן, בדוק את הזיכרון עם שימוש בזיכרון
:
- memory usage key_meaningOfLife
Output(integer) 88
להבנה כללית יותר של כיצד השרת שלך של Redis משתמש בזיכרון, תוכל להפעיל את הפקודה סטטיסטיקות זיכרון
:
- memory stats
הפקודה הזו מחזירה מערך של מדדים הקשורים לזיכרון וערכיהם. הנה המדדים שמדווחים על ידי סטטיסטיקות זיכרון
:
peak.allocated
: מספר הבתים המרבי שנצרכו על ידי Redistotal.allocated
: מספר כללי של הבתים שהוקצו על ידי Redisstartup.allocated
: מספר הבתים ההתחלתי שנצרכו על ידי Redis בהפעלהreplication.backlog
: גודל הרשומה לשטח, בבתיםclients.slaves
: סה"כ גודל ההוצאות של כל עותק על, הכוונה לפלט ולתוך תקיות השאילתה וההתחברותclients.normal
: סה"כ גודל ההוצאות של כל הלקוחותaof.buffer
: סה"כ גודל התקייה הנוכחית ושוב קובץ התוספת הבלעדי buffersdb.0
: ההוצאות של המילונים הראשיים והתפוגה של כל בסיס נתונים בשימוש בשרת, דוחות בבתיםoverhead.total
: סך כל ההוצאות המשמשות לניהול של מרחב המפתחות של Rediskeys.count
: סה"כ מספר המפתחות המאוחסנים בכל בסיסי הנתונים בשרתkeys.bytes-per-key
: יחס בין שימוש הזיכרון הנטו של השרת וביןkeys.count
dataset.bytes
: גודל הסט נתונים, בבתיםdataset.percentage
: האחוז של שימוש הזיכרון הנטו של Redis שנלקח מתוךdataset.bytes
peak.percentage
: האחוז שלpeak.allocated
שנלקח מתוךtotal.allocated
פיצוץ
: היחס בין כמות הזיכרון שנמצאת בשימוש כרגע לבין הזיכרון הפיזי ש Redis באמת משתמש בו.
זיכרון malloc-stats
מספק דוח סטטיסטי פנימי מ־jemalloc, מאזן הזיכרון שבו משתמש Redis במערכות Linux:
- memory malloc-stats
אם נראה שיש לך בעיות קשורות לזיכרון, אך ניתן לראות שנתוני הפלט של הפקודות הקודמות אינם מועילים, ניתן לנסות להריץ memory doctor
:
- memory doctor
תכונה זו תעזור להדפיס כל בעיות צריכת זיכרון שנמצאות ותציע פתרונות אפשריים.
קבלת מידע כללי על מופע Redis שלך
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
פקודה נוספת שימושית לצורך ניפוי הוא info
, שמחזירה מספר בלוקים של מידע וסטטיסטיקות על השרת:
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
פקודה זו מחזירה המון מידע. אם ברצונך להחזיר רק בלוק מידע אחד, ניתן לציין אותו כארגומנט ל־info
:
- info CPU
Output# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
שים לב שהמידע שמוחזר על ידי הפקודה info
יתנהג בהתאם לגרסת Redis שאתה משתמש בה.
שימוש בפקודת keys
הפקודה keys
מועילה במקרים בהם שכחת את שם המפתח, או אולי יצרת אחד אך טעית בכתיב של שמו. keys
מחפשת מפתחות המתאימים לתבנית:
- keys pattern
תמיכה במשתנים בסגנון גלוב מתבצעת על ידי:
?
הוא תו כללי שעומד במקום תו יחיד כלשהו, לכןs?mmy
מתאים ל־sammy
,sommy
, ו־sqmmy
*
הוא תו כללי שעומד במקום כל מספר של תווים, כולל אפילו אף תו, לכןsa*y
מתאים ל־sammy
,say
,sammmmmmy
, ו־salmony
- ניתן לציין שני או יותר תווים שהתבנית יכולה לכלול על ידי לסגור אותם בסוגריים מרובעים, לכן
s[ai]mmy
יתאים ל־sammy
ו־simmy
, אך לא ל־summy
- כדי להגדיר תו כללי שמתעלם מאות או יותר, יש לסגור אותם בסוגריים מרובעים ולפנות אותם בסירה (
^
), לכןs[^oi]mmy
יתאים ל־sammy
ו־sxmmy
, אך לא ל־sommy
או ל־simmy
- כדי להגדיר תו כללי שכולל טווח של אותיות, יש להפריד את תחילת וסופו של הטווח במקף ולסגור אותו בסוגריים מרובעים, לכן
s[a-o]mmy
יתאים ל־sammy
,skmmy
, ו־sommy
, אך לא ל־srmmy
אזהרה: מדריך ה־Redis מזהיר כי על keys
לא ישתמש בסביבת ייצור מסובכת כמעט אף פעם מאחר שיכול להיות לו השפעה שלילית גדולה על הביצועים.
סיכום
מדריך זה מפרט מספר פקודות שימושיות לפתירת בעיות ולטיפול בהן שעשויות להתעורר בעת העבודה עם Redis. אם ישנם פקודות נוספות, ארגומנטים או פרוצדורות קשורים אחרים שתרצה ללמוד עליהם במדריך זה, אנא שאל או הצעות בתגובות.
למידע נוסף על פקודות Redis, ניתן לבדוק את סדרת המדריכים שלנו על איך לנהל מסד נתונים של Redis.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis