1.5 רדיס הרצאה
Redis – מסד נתונים בזיכרון (In-Memory Data Store)¶
הקדמה¶
רדיס- Redis הוא מסד נתונים מהיר במיוחד שעובד בזיכרון (RAM).
בניגוד ל-MySQL או MongoDB, Redis לא מיועד להיות מקור האמת הראשי של הדאטה, אלא כלי עזר שמטרתו:
- ביצועים
- הורדת עומס ממסדי נתונים אחרים
- עבודה עם נתונים זמניים
Redis נפוץ מאוד כמעט בכל מערכת אמיתית: - אתרי תוכן
- מערכות מסחר
- מערכות בזמן אמת
למה צריך Redis?¶
נניח שיש לנו מערכת טיולים:
-
כל בקשה ל־GET /trips/{id} פונה ל־DB
-
מאות משתמשים מבקשים את אותו טיול
-
המסד נהיה צוואר בקבוק
במקום לפנות ל־DB כל פעם:
-
שומרים את התוצאה ב־Redis
-
בקשות חוזרות נשלפות מהזיכרון
התוצאה:
-
פי עשרות ומהירות גבוהה יותר
-
פחות עומס על MySQL / MongoDB
Redis ≠ Database רגיל¶
Redis הוא:
-
In-Memory
-
Key-Value
-
NoSQL
אבל עם יכולות מתקדמות:
-
TTL (זמן חיים)
-
Atomic operations
-
מבני נתונים מתקדמים
-
Pub/Sub
-
Counters
-
Rate limiting
מבני נתונים ב־Redis¶
String¶
המבנה הבסיסי ביותר:
שימושים:
-
Cache
-
Tokens
-
JSON serialized
Hash¶
אובייקט עם שדות:
או:
שימושים:
-
אובייקטים פשוטים
-
User profiles
-
Settings
List¶
רשימה מסודרת:
שימושים:
-
Activity feed
-
History
-
Queues פשוטים
Set¶
אוסף ללא כפילויות:
שימושים:
-
Tags
-
Relations פשוטים
-
מניעת כפילויות
Sorted Set¶
כמו Set, אבל עם ציון:
שימושים:
-
דירוגים
-
Leaderboards
-
סטטיסטיקות
Redis כ־Cache¶
עקרון העבודה¶
-
בקשה מגיעה לשרת
-
מחפשים את הנתון ב־Redis
-
אם קיים → מחזירים
-
אם לא → פונים ל־DB, שומרים ב־Redis ומחזירים
דוגמה – Cache לטיול¶
trip = redis.get("trip:123")
if not trip:
trip = db.get_trip(123)
redis.setex("trip:123", 60, serialize(trip))
return trip
-
setexמגדיר TTL -
הנתון יימחק אוטומטית אחרי 60 שניות
TTL – Time To Live¶
Redis יודע למחוק נתונים לבד.
שימושים:
-
Sessions
-
OTP
-
Tokens
-
Cache זמני
Counters ו־Atomic Operations¶
Redis תומך בפעולות אטומיות:
שימושים:
-
ספירת כניסות
-
Rate limiting
-
סטטיסטיקות
Rate Limiting עם Redis¶
דוגמה:
- מקסימום 100 בקשות בדקה למשתמש
אם הערך > 100 → חוסמים.
Pub / Sub (Messaging)¶
Redis מאפשר שליחת הודעות בזמן אמת.
שימושים:
-
Notifications
-
Chat
-
עדכונים בזמן אמת
Redis בפרודקשן¶
דברים חשובים:
-
Redis לא מחליף DB
-
לא לשמור דאטה קריטי בלבד ב־Redis
-
תמיד להגדיר TTL
-
Redis יכול להתרוקן (Restart)
ברוב המערכות:
-
SQL / Mongo = Source of Truth
-
Redis = Cache / Performance Layer
חיבור Redis בפייתון¶
הרצה ב־Docker:¶
חיבור בפייתון:¶
נסו לקרוא בעצמכם על שימוש של רדיס בפייתון!
Redis במערכת TRIP¶
שימושים אפשריים:
-
Cache לטיולים
-
Cache לרשימות פופולריות
-
Counter של צפיות בטיול
-
Session management
-
Rate limit ל־API
השוואה: SQL / Mongo / Redis¶
| מערכת | תפקיד |
|---|---|
| MySQL / Postgres | נתונים עסקיים, קשרים |
| MongoDB | נתונים גמישים, JSON |
| Redis | ביצועים, Cache, זמן אמת |
סיכום¶
-
Redis הוא כלי קריטי למערכות אמיתיות
-
עובד בזיכרון → מהיר מאוד
-
לא מחליף DB רגיל
-
מושלם ל־Cache, Counters ו־Rate Limiting
-
תכנון נכון חוסך כסף וביצועים
-
אם Redis נופל- המערכת צריכה להמשיך לעבוד, רק לאט יותר.