מה השם המלא של Redis RDB? Redis מצב פעולת התמדה של נתוני זיכרון RDB

השם המלא של RDB הואRedis database.

  • כפי שהשם מרמז, RDB הוא מסד נתונים של Redis המשמש לאחסון נתונים.
  • לכן, באמצעות RDB persistence, הנתונים המאוחסנים בזיכרון Redis נכתבים לקובץ RDB ונשמרים בדיסק כדי להשיג התמדה.
  • התכונה של Redis היא שהיא יכולה להתמיד בנתונים, כלומר לכתוב נתונים בזיכרון לדיסק כדי להבטיח שלא יאבדו נתונים, ויכולה גם לטעון נתונים מהדיסק לזיכרון.

מה השם המלא של Redis RDB? Redis מצב פעולת התמדה של נתוני זיכרון RDB

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

לכן, אנחנו צריכים לכתוב נתונים בזיכרון לדיסק במרווחי זמן מוגדרים, שזה Snapshot בז'רגון.

בעת השחזור, קובץ תמונת המצב נכתב ישירות לזיכרון.

זהו גם אחד ההבדלים העיקריים בין Redis ל-Memcached, מכיוון של-Memcached אין יכולת התמדה.

לצורך התמדה של נתוני זיכרון Redis, Redis מספקת לנו את השיטות הבאות:

  • שיטת Snapshot (RDB, Redis DataBase): כתיבת נתוני זיכרון לדיסק בצורה בינארית ברגע מסוים;
  • הוסף קובץ בלבד (AOF, הוסף קובץ בלבד), הקלט את כל פקודות הפעולה והוסף לקובץ בצורת טקסט;
  • התמדה היברידית, שיטה חדשה אחרי Redis 4.0, התמדה היברידית משלבת את היתרונות של RDB ו-AOF.בעת הכתיבה, תחילה כתוב את הנתונים הנוכחיים לתחילת הקובץ בצורה של RDB, ולאחר מכן שמור את פקודות הפעולה הבאות לקובץ בצורה של AOF, מה שיכול לא רק להבטיח את מהירות ההפעלה מחדש של Redis, אלא גם להפחית הסיכון לאובדן נתונים.

מכיוון שלכל סכימת התמדה יש ​​תרחישי שימוש ספציפיים.

Redis מצב פעולת התמדה של נתוני זיכרון RDB

  • RDB (Redis DataBase) הוא תהליך כתיבת תמונת מצב של זיכרון (Snapshot) ברגע מסוים לדיסק בצורה בינארית.
  • צילומי זיכרון הם מה שאמרנו למעלה.זה מתייחס לרשומת המצב של נתונים בזיכרון ברגע מסוים.
  • זה דומה לצילום תמונה כאשר אתה מצלם תמונה של חבר, תמונה יכולה להקליט באופן מיידי את כל התמונות של החבר.
  • ישנן שתי דרכים להפעיל RDB: האחת היא הפעלה ידנית, והשנייה היא הפעלה אוטומטית.

הפעל באופן ידני את ה-RDB

ישנן שתי פעולות להפעלה ידנית של התמדה:saveו -bgsave.

ההבדל העיקרי ביניהם הוא האם לחסום או לא את ביצוע השרשור הראשי של Redis.

1. שמור פקודה

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

127.0.0.1:6379> save
OK
127.0.0.1:6379>

תהליך ביצוע הפקודה מוצג באיור 

2. פקודת bgsave

  • bgsave (שמירה ברקע) היא שמירת רקע.
  • ההבדל הגדול ביותר בינו לבין פקודת השמירה הוא ש-bgsave יחלק תהליך ילד לביצוע התמדה.
  • כל התהליך קורה רק כאשר תהליך הילד הוא מזלג.יש רק חסימה קצרה.
  • לאחר יצירת תהליך הילד, התהליך הראשי של Redis יכול להגיב לבקשות של לקוחות אחרים.

עם חסימת כל התהליךsaveבהשוואה לפקודהbgsaveברור שהפקודה מתאימה לנו יותר לשימוש.

127.0.0.1:6379> bgsave
Background Saving started # 提示开始后台保存 
127.0.0.1:6379>

הפעל RDB באופן אוטומטי

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

1. להציל מנ

  • save mn פירושו שבתוך m שניות, אם n מקשים משתנים, התמדה מופעלת אוטומטית.ניתן למצוא את הפרמטרים m ו-n בקובץ התצורה של Redis.
  • לדוגמה, שמירת 60 1 פירושה שבתוך 60 שניות, כל עוד מפתח אחד משתנה, תופעל התמדה RDB.
  • המהות של הפעלה אוטומטית של התמדה היא שאם מתקיימים תנאי ההפעלה שנקבעו, Redis יבצע אוטומטית את הפקודה bgsave פעם אחת.

הערה: כאשר מוגדרות מספר פקודות save mn, כל תנאי אחד יפעיל התמדה.

לדוגמה, אנו מגדירים את שתי הפקודות הבאות של save mn:

save 60 10
save 600 20
  • כאשר ערך מפתח Redis משתנה 60 פעמים תוך 10 שניות, תופעל התמדה;
  • אם מפתח Redis משתנה תוך 60 שניות, ואם הערך משתנה פחות מ-10 פעמים, Redis תקבע אם מפתח Redis השתנה לפחות 600 פעמים תוך 20 שניות, ואם כן, תפעיל התמדה.

2. פלושל

  • הפקודה flushall משמשת לניקוי מסד הנתונים של Redis.
  • יש להשתמש בו בזהירות בסביבת ייצור.
  • כאשר Redis מבצעת את פקודת flushall, היא מפעילה התמדה אוטומטית ומנקה את קובץ ה-RDB.

3. טריגר סנכרון מאסטר-עבד

בשכפול Redis master-slave, כאשר צומת העבד מבצע פעולת שכפול מלאה, הצומת הראשי יבצע את הפקודה bgsave כדי לשלוח את קובץ ה-RDB לצומת ה-slave.תהליך זה מפעיל אוטומטית את Redis persistence.

Redis יכול לשאול את פרמטרי התצורה הנוכחיים באמצעות פקודות.

הפורמט של פקודת השאילתה הוא:config get xxx

לדוגמה, אם אתה רוצה לקבל את הגדרת שם האחסון של קובץ RDB, אתה יכול להשתמש config get dbfilename .

אפקט הביצוע הוא כדלקמן:

127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"

מכיוון ששרת Redis יחסום בעת טעינת קובץ ה-RDB עד להשלמת הטעינה, הדבר עלול לגרום לזמן ארוך ולא ניתן לגשת לאתר.

אם ברצונך למחוק ידנית את קובץ המטמון RDB dump.rdb של Redis, תוכל להשתמש בפקודה הבאה כדי למצוא את נתיב האחסון של קובץ dump.rdb▼

find / -name dump.rdb
  • לאחר מכן, מחק ידנית את קובץ המטמון dump.rdb באמצעות SSH.

Redis מגדיר את התצורה של RDB

לגבי הגדרת התצורה של RDB, אתה יכול להשתמש בשתי הדרכים הבאות:

  1. שנה ידנית את קובץ התצורה של Redis
  2. השתמש בהגדרות שורת הפקודה, config set dir "/usr/data" היא פקודת האחסון לשינוי קובץ ה-RDB

הערה: ניתן להשיג את התצורה ב-redis.conf דרך config get xxx ולשנות באמצעות ערך config set xxx, והשיטה של ​​שינוי ידני של קובץ התצורה של Redis יעילה גלובלית, כלומר, הפרמטרים שנקבעו על ידי הפעלה מחדש של שרת Redis לא יהיו יאבד, אך ישונה באמצעות הפקודה , הוא יאבד לאחר הפעלה מחדש של Redis.

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

שחזור קבצי RDB

כאשר שרת Redis מופעל, אם קובץ ה-RDB dump.rdb קיים בספריית השורש של Redis, Redis תטען אוטומטית את קובץ ה-RDB כדי לשחזר נתונים קבועים.

אם אין קובץ dump.rdb בספריית הבסיס, אנא העבר את הקובץ dump.rdb לספריית הבסיס של Redis.

כמובן, יש מידע על יומן כאשר Redis מתחיל, אשר יראה אם ​​קובץ ה-RDB נטען.

שרת Redis חוסם בזמן טעינת קובץ ה-RDB עד להשלמת הטעינה.

כעת אנו יודעים שההתמדה RDB מחולקת לשתי דרכים: הפעלה ידנית והפעלה אוטומטית:

  1. היתרון שלו הוא שקובץ האחסון קטן ושחזור הנתונים מהיר יותר כאשר Redis מופעל.
  2. החיסרון הוא שיש סיכון לאובדן נתונים.

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

RDB יתרונות וחסרונות

1) יתרונות RDB

התוכן של RDB הוא נתונים בינאריים, שתופסים פחות זיכרון, קומפקטיים יותר ומתאים יותר כקובץ גיבוי;

RDB שימושי מאוד להתאוששות מאסון, זהו קובץ דחוס שניתן להעביר לשרת מרוחק מהר יותר לשחזור שירות Redis;

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

התהליך הראשי של Redis אינו מבצע פעולות כמו דיסק I/O;

בהשוואה לקבצי פורמט AOF, קבצי RDB מופעלים מחדש מהר יותר.

2) חסרונות של RDB

מכיוון ש-RDB יכול לשמור נתונים רק במרווח זמן מסוים, אם שירות Redis ייסגר בטעות באמצע, נתוני Redis יאבדו לפרק זמן מסוים;

תהליך שבו RDB דורש מזלגות תכופים כדי לשמור אותו בדיסק באמצעות ערך משנה.

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

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

אם אינך רגיש לאובדן נתונים, תוכל לעשות זאת כאשר הלקוח מתחבר config set save "" פקודה להשבית התמדה עבור Redis.

redis.conf, אני סנפירsaveציין את כל התצורות בהתחלה, וההתמדה תושבת גם היא, אך בדרך כלל זה לא נעשה.

Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) shared "מה השם המלא של Redis RDB? Redis RDB In-Memory Data Persistence Operation Mode", יעזור לך.

מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-26677.html

ברוכים הבאים לערוץ הטלגרם של הבלוג של Chen Weiliang כדי לקבל את העדכונים האחרונים!

🔔 היה הראשון לקבל את "מדריך השימוש בכלי AI של ChatGPT Content Marketing" בספרייה העליונה של הערוץ! 🌟
📚 המדריך הזה מכיל ערך עצום, 🌟זו הזדמנות נדירה, אל תפספסו אותה! ⏰⌛💨
שתפו ותעשו לייק אם בא לכם!
השיתוף והלייקים שלך הם המוטיבציה המתמשכת שלנו!

 

发表 评论

כתובת האימייל שלך לא תפורסם. 必填 项 已 用 * תווית

גלול למעלה