Redis: دورة Redis التعليمية - الصفحة الرئيسية
Redis هي قاعدة بيانات مفتوحة المصدر من نوع مفتاح-قيمة تعمل في الذاكرة، يمكن استخدامها كقاعدة بيانات وذاكرة تخزين مؤقت ووسيط رسائل. تدعم Redis هياكل بيانات متعددة، وتقدم أداءً عاليًا جدًا، وهي مكون أساسي في تطبيقات الويب الحديثة.
1. ما هي Redis؟
Redis تعني REmote DIctionary Server (خادم القاموس البعيد)، طورها Salvatore Sanfilippo في عام 2009. تخزن البيانات في الذاكرة، مما يوفر سرعات قراءة وكتابة فائقة تصل إلى أكثر من 100,000 عملية في الثانية.
(1) الميزات الأساسية لـ Redis
| الميزة | الوصف |
|---|---|
| التخزين في الذاكرة | تُخزّن البيانات في الذاكرة لسرعات قراءة وكتابة فائقة |
| الاستمرارية | تدعم لقطات RDB وتسجيل AOF |
| أنواع بيانات غنية | تدعم السلاسل والتجزئات والقوائم والمجموعات والمجموعات المرتبة والمزيد |
| عمليات ذرية | جميع العمليات ذرية مع دعم المعاملات |
| نشر/اشتراك | نظام رسائل مدمج للنشر والاشتراك |
| أداء عالٍ | QPS للمثيل الواحد قد تتجاوز 100,000 مع دعم النسخ المتماثل والمجموعات |
2. ماذا يمكن أن تفعل Redis؟
(1) نظام التخزين المؤقت
هذه هي حالة الاستخدام الأكثر شيوعًا. خزّن نتائج استعلامات قاعدة البيانات واستجابات API وأجزاء الصفحات في Redis لتعزيز أداء التطبيق بشكل كبير.
طلب المستخدم → التحقق من ذاكرة Redis المؤقتة → وجود ⇒ إرجاع
← عدم وجود
استعلام DB → تخزين في Redis → إرجاع
(2) تخزين الجلسات
خزّن حالة تسجيل دخول المستخدم وعربات التسوق والبيانات المؤقتة في Redis لدعم مشاركة الجلسات عبر البيئات الموزعة.
(3) قائمة انتظار الرسائل
استخدم قوائم Redis ونظام النشر/الاشتراك لتنفيذ قوائم انتظار رسائل خفيفة.
(4) لوحات المتصدرين
استفد من قدرات الفرز للمجموعات المرتبة للوحات المتصدرين في الألعاب وقوائم الاتجاهات والمزيد.
(5) العدادات
استخدم أمر INCR على السلاسل لإحصاءات مشاهدة المقالات والإعجابات وإحصاءات الزيارات والمزيد.
(6) الميزات الاجتماعية
استخدم عمليات تقاطع واتحاد المجموعات لتنفيذ الأصدقاء المشتركين والأشخاص الذين قد تعرفهم وميزات اجتماعية أخرى.
3. Redis مقابل قواعد البيانات الأخرى
(1) Redis مقابل Memcached
| الجانب | Redis | Memcached |
|---|---|---|
| أنواع البيانات | غنية (5 أنواع أساسية) | سلاسل فقط |
| الاستمرارية | مدعومة | غير مدعومة |
| التجميع | دعم أصلي | يتطلب تجزئة من جانب العميل |
| إدارة الذاكرة | أكثر مرونة | أبسط |
| الأداء | عالٍ جدًا | عالٍ جدًا |
(2) Redis مقابل قواعد البيانات العلائقية (MySQL)
| الجانب | Redis | MySQL |
|---|---|---|
| التخزين | ذاكرة | قرص |
| نموذج البيانات | مفتاح-قيمة | جداول علائقية |
| قدرة الاستعلام | بسيطة | قوية (SQL) |
| دعم المعاملات | معاملات بسيطة | ACID كامل |
| الأداء | عالٍ جدًا | عالٍ |
| الاستمرارية | اختيارية | افتراضية |
(3) Redis مقابل MongoDB
| الجانب | Redis | MongoDB |
|---|---|---|
| نموذج البيانات | مفتاح-قيمة | مستند (JSON) |
| لغة الاستعلام | قائمة على الأوامر | شبيهة بـ SQL |
| استخدام الذاكرة | كلها في الذاكرة | ذاكرة + قرص |
| حالات الاستخدام | تخزين مؤقت، جلسات، قوائم انتظار | تخزين مستندات، إدارة محتوى |
4. حالات استخدام Redis
(1) تستخدمها شركات الإنترنت الكبرى
- ويبو: تخزين علاقات المستخدمين، قوائم انتظار الرسائل، المواضيع الرائجة
- توباو: تخزين المنتجات مؤقتًا، عربات التسوق، أنظمة البيع السريع
- وي شات: رسائل الجلسات، إعجابات اللحظات
- GitHub: تخزين مؤقت، قوائم انتظار، عدادات
(2) سيناريوهات التطبيق النموذجية
| السيناريو | نوع البيانات المستخدم | الوصف |
|---|---|---|
| تخزين مؤقت | String | تخزين بيانات مؤقتة مع انتهاء صلاحية |
| تخزين جلسات | String | تخزين معلومات جلسة المستخدم |
| عربة تسوق | Hash | تخزين معرفات المنتجات وكمياتها |
| قائمة انتظار رسائل | List | LPUSH/RPOP لقائمة الانتظار |
| لوحة متصدرين | Sorted Set | فرز تلقائي، تحديثات فورية |
| علاقات اجتماعية | Set | قوائم الأصدقاء، حسابات التقاطع |
| عداد | String | INCR زيادة ذرية |
| تحديد معدل | String + TTL | تتبع عدد الزيارات |
5. تاريخ إصدارات Redis
| الإصدار | تاريخ الإصدار | الميزات الرئيسية |
|---|---|---|
| 1.0 | 2009 | الإصدار الأولي |
| 2.0 | 2010 | ذاكرة افتراضية، نشر/اشتراك |
| 2.6 | 2012 | برمجة Lua، دقة محسّنة لانتهاء الصلاحية |
| 2.8 | 2013 | مزامنة جزئية، إعادة كتابة الإعدادات |
| 3.0 | 2015 | دعم المجموعات الرسمي |
| 3.2 | 2016 | تحسينات GEO و bitmap |
| 4.0 | 2017 | نظام الوحدات، استمرارية هجينة |
| 5.0 | 2018 | نوع البيانات Streams |
| 6.0 | 2020 | التحكم في الوصول ACL، I/O متعدد الخيوط |
| 7.0 | 2022 | Functions، AOF متعدد الأجزاء |
6. لمن هذه الدورة؟
- مطورو الواجهة الخلفية: تعلم Redis لتعزيز أداء التطبيق
- مهندسو DevOps: إتقان نشر Redis وتحسينه
- المعماريون: فهم Redis في بنية النظام
- الطلاب: تعلم تكنولوجيا قواعد البيانات الحديثة
7. المتطلبات الأساسية
- معرفة أساسية بأوامر Linux
- الإلمام بلغة برمجة واحدة على الأقل (Python، Java، Node.js، إلخ)
- فهم أساسي لمفاهيم قواعد البيانات
8. محتويات الدورة
تنقسم هذه الدورة إلى 4 أجزاء:
- أساسيات Redis: التثبيت، الإعدادات، العمليات الأساسية
- أنواع البيانات بالتفصيل: السلاسل، التجزئات، القوائم، المجموعات، المجموعات المرتبة
- الميزات المتقدمة: المعاملات، الاستمرارية، الأمان، تحسين الأداء
- التطبيقات العملية: استخدام Redis مع Python و Java و Node.js
▶ مثال
الاتصال والعمليات الأساسية:
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> GET mykey
"Hello"
❓ أسئلة شائعة
📖 ملخص
- Redis هي قاعدة بيانات مفتاح-قيمة في الذاكرة عالية الأداء مع أنواع بيانات غنية
- تُستخدم عادةً للتخزين المؤقت وتخزين الجلسات وقوائم انتظار الرسائل ولوحات المتصدرين
- مقارنة بـ Memcached، تدعم Redis أنواع بيانات أكثر واستمرارية
- مقارنة بـ MySQL، Redis أسرع لكنها غير مناسبة للاستعلامات المعقدة
- الإصدار الموصى به: Redis 6.0 أو أحدث
📝 تمارين
- فكر: في مشاريعك، أي السيناريوهات مناسبة لاستخدام Redis؟
- ابحث: انظر إلى المواقع أو التطبيقات التي تستخدمها بانتظام — ماذا قد تستخدم Redis فيه؟
- قارن: ما هي إيجابيات وسلبيات Redis مقابل Memcached؟ كيف ستختار؟
9. الدرس التالي
في الدرس التالي، سنتعلم تثبيت Redis، والذي يغطي التثبيت على Linux و Windows و Mac.