לדלג לתוכן

מה זה Redis ולמה כמעט כל מערכת בבקאנד משתמשת בו

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

אז מה זה בעצם Redis

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

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

שימוש 1 - קאשינג

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

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

שימוש 2 - ניהול sessions

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

שימוש 3 - rate limiting

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

שימוש 4 - תורים פשוטים ותקשורת בין שירותים

Redis תומך גם במבני נתונים כמו רשימות ו-pub/sub, מה שהופך אותו לכלי סביר לתורי הודעות פשוטים או לתקשורת בזמן אמת בין חלקים שונים של המערכת. הוא לא מחליף כלי ייעודי כמו Kafka במערכות גדולות, אבל לפרויקטים בגודל בינוני הוא מספיק ולפעמים אפילו עדיף בגלל הפשטות.

מתי לא להשתמש ב-Redis

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

איך מתחילים לעבוד איתו בפועל

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

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

הצטרפו לקהילה בדיסקורד

לסיכום

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