message bus קל-משקל שמחבר 13 סוכנים בלי Kafka, RabbitMQ או SQS
Redis Streams היא תכונה של Redis (החל מגרסה 5.0, 2018) שהופכת אותו ל-message broker קליל מאוד — תקשורת אסינכרונית בין שירותים, בלי הסיבוך של Kafka או RabbitMQ. Redis עצמו הוא מאגר key-value בזיכרון שרץ במאות אלפי VPS ברחבי העולם — מהיר במיוחד (פעולות במיקרו-שניות), פשוט להגדרה, וצורך מינימום משאבים. Streams הוסיפו לו את היכולת להחזיק תורים מתמשכים של הודעות עם consumer groups (קבוצות צרכנים שמתחלקות בעבודה), acknowledgments (אישור שהודעה טופלה), ו-replay (יכולת לחזור להודעות ישנות). אצלי (אלעד) Redis Streams הוא 'העצב המרכזי' של רשת 13 הסוכנים שלי על Hetzner: כשמסר WhatsApp מגיע ל-Kami, הוא לא מטפל בו לבד — הוא דוחף הודעה ל-stream, וצרכנים שונים (Box לתזונה, Adopter לתוכן, Hermes לזמנים) קוראים ומגיבים. אם סוכן אחד נופל, ההודעות מחכות ב-stream עד שהוא חוזר. אם רוצים סוכן חדש שמאזין לאותם events — מוסיפים אותו ל-consumer group ב-30 שניות. מאז המעבר ל-Redis Streams (לפני שנתיים, Q2 2024), המערכת שלי יציבה הרבה יותר: כל סוכן עובד לבד, וההיגיון 'מי מקשיב למה' מנוהל ב-Redis במקום ב-API calls ישירים.
כש-Kami מקבל הודעה, הוא לא מתקשר ל-Box. הוא דוחף ל-stream. כל מי שמעוניין — קורא.
Kami → HTTP POST → Box (אם Box למעלה)
Kami → XADD → stream → Box כשהוא פנוי
להוסיף סוכן חדש = לעדכן את כל מי שצריך לקרוא לו
להוסיף consumer ל-group, אפס שינויים אצל אחרים
סוכן נופל = הודעות אבודות
Stream שומר עד אישור (ack)
Kafka = 4GB RAM + Zookeeper + תחזוקה
Redis = 100MB, פקודה אחת
הנה איך:
בכל פעם שיש לכם 'A צריך להודיע ל-B כשמשהו קורה', Redis Streams הוא הפתרון הפשוט ביותר.
ברגע שיש 5+ שירותים שצריכים לדבר זה עם זה, HTTP ישיר הופך לכאוס. message bus פותר את זה.
במקום BullMQ/Sidekiq, Redis Streams יכול לשמש כתור קל — XADD = enqueue, consumer group = workers.
Kafka נהדר לעומסים של מיליארדי הודעות, אבל לרוב הצרכים, Redis Streams עושה את אותה עבודה באחוז אחד מהסיבוך.
לחצו על כל סעיף לפתיחה
התיעוד הרשמי — מקיף, עם דוגמאות לכל פעולה
המדריך הרשמי למתחילים — קל להבנה
הספרייה הרשמית ל-Python — תומכת מלאה ב-Streams
הספרייה הסטנדרטית ל-Node.js
GUI רשמי — מציג streams בצורה ויזואלית
להריץ Redis בקונטיינר עם persistence
אצלי 13 סוכנים מתואמים דרך Redis Streams בלי Kafka, בלי overhead. אני יכול לעזור לכם לתכנן את שלכם.
מפתח Full-Stack ומומחה AI
אצלי על Hetzner, Redis Streams מחבר 13 סוכנים שמטפלים ב-~50k הודעות ביום. צריכת RAM: ~100MB. latency ממוצע: פחות מ-5ms. עברתי ל-Streams לפני שנתיים אחרי שהבנתי ש-Kafka עבר את הקיבולת שלי לסבול. המעבר היה הצלחה — מאז המערכת יציבה ופשוטה הרבה יותר לתחזוקה.