الـRedis هو In-Memory Data Store سريع الأداء يُستخدم لتخزين البيانات التي تحتاج الوصول إليها بشكل متكرر وسريع. يوفر مجموعة متنوعة من الهياكل مثل Strings، Lists، Sets، Hashes وغيرها، مما يجعله خيارًا مثاليًا للتعامل مع البيانات المؤقتة.


أهم المواضيع حول Redis

1. متى تستخدم Redis؟

الـRedis يُستخدم في سيناريوهات الأداء العالي، مثل:

  • التخزين المؤقت (Caching):
    • بدلاً من تكرار استعلامات معقدة على قواعد بيانات تقليدية مثل MySQL أو MongoDB، يمكن تخزين نتائج الاستعلام في Redis للوصول السريع.
    • مثال: في تطبيق مراسلة، تخزين آخر 5 رسائل لكل مستخدم باستخدام هيكل البيانات Lists.
  • إدارة الجلسات (Session Management):
    • تخزين بيانات الجلسة الخاصة بالمستخدم.
  • الـQueue Systems:
    • إدارة قوائم الانتظار والرسائل.

2. مميزات Redis

  1. أداء عالي:
    • سريع جدًا في عمليات القراءة والكتابة لأنه يعتمد على الـ RAM.
  2. سهولة الاستخدام:
    • أوامر بسيطة وسهلة الدمج مع التطبيقات.
  3. تنوع الهياكل:
    • يدعم Strings, Lists, Sets, Hashes، مما يتيح مرونة في التعامل مع البيانات.
  4. العمليات الذرية (Atomic Operations):
    • تضمن الاتساق في العمليات المعقدة.
  5. خيارات الاستدامة (Persistence):
    • دعم Snapshots وAppend-Only Files لتوفير استدامة جزئية للبيانات.
  6. التكرار وتوافر عالي:
    • يدعم Master-Slave Replication لتوفير نسخ احتياطية وتحمل الأعطال.

3. عيوب Redis

  1. تعقيد الاستدامة:
    • الخيارات مثل Snapshots أو Append-Only Files قد تكون معقدة وتؤثر على الأداء.
  2. محدودية الاستعلامات:
    • لا يدعم الاستعلامات المعقدة مثل قواعد البيانات التقليدية.
  3. استهلاك الذاكرة:
    • يعتمد على الـ RAM، مما يجعله مكلفًا للتعامل مع مجموعات بيانات ضخمة.
  4. طبيعة أحادية الخيط (Single-Threaded):
    • قد يواجه صعوبة في الاستفادة الكاملة من الأنظمة متعددة الأنوية.
  5. قيود الأمان:
    • في الإصدارات القديمة، افتقر إلى ميزات الأمان.

Install Redis

Install Redis on Windows | Docs Releases · tporadowski/redis


لكي يتم التعرف على أمر redis-server من أي مكان في الـ Command Line:

  1. افتح إعدادات النظام:
    • اضغط Win + R واكتب:
sysdm.cpl

  • اضغط Enter.
  1. تعديل متغيرات البيئة:
    • اذهب إلى علامة التبويب Advanced.
    • اضغط على Environment Variables.
    • تحت System Variables، ابحث عن متغير Path واضغط Edit.
  2. إضافة مسار Redis إلى Path:
    • اضغط New.
    • أضف المسار إلى مجلد Redis الذي يحتوي على الملفات التنفيذية، مثل:
C:\redis
  1. حفظ التغييرات:
    • اضغط OK لحفظ كل النوافذ المفتوحة.

4. كيفية بدء Redis Server

  • تشغيل Redis Server:
redis-server

لو ظهرت مشكلة ففالغالب ال port مشغول

  1. التحقق مما إذا كان المنفذ 6379 مستخدمًا بالفعل:

    • على نظام Windows، افتح موجه الأوامر (Command Prompt) كمسؤول واستخدم الأمر التالي:

      netstat -ano | findstr :6379

    • إذا ظهر أي عملية تستخدم المنفذ 6379، لاحظ رقم المعرف (PID).

    • يمكنك إنهاء العملية باستخدام:

      taskkill /PID [PID] /F

      مع استبدال [PID] برقم العملية.

  • الاتصال بـ Redis CLI:
redis-cli
  • المنفذ الافتراضي: 6379.

أو استخدم برنامج زي Redily أو DBeaver


هياكل البيانات في Redis

  1. Strings: القيم البسيطة.
  2. Lists: قائمة مرتبة.
  3. Sets: مجموعة غير مرتبة ولا تحتوي على عناصر مكررة.
  4. الـHashes: تخزين البيانات على شكل Key-Value داخل مفتاح رئيسي.
  5. Sorted Sets: مجموعة مرتبة بعناصر مميزة.
  6. HyperLogLog: لتقدير الأعداد الفريدة.

أوامر Redis الأساسية

  1. SET/GET:

    • إضافة واسترجاع البيانات.
    SET key value
    GET key
  2. DEL:

    • حذف المفتاح.
    DEL key
  3. EXPIRE:

    • تعيين وقت انتهاء.
    EXPIRE key 60
  4. HSET/HGET:

    • إدارة Hashes.
    HSET user:1 name "John"
    HGET user:1 name
  5. LPUSH/LPOP:

    • إدارة القوائم.
    LPUSH list "item1"
    LPOP list

استخدام Redis في السيناريوهات المختلفة

  • التخزين المؤقت (Caching):
    • تسريع التطبيقات عن طريق تخزين النتائج.
  • إدارة الجلسات:
    • تخزين بيانات المستخدمين المؤقتة.
  • إدارة الرسائل (Messaging):
    • إدارة قوائم الانتظار والـ Streams.

مقارنة Redis مع قواعد البيانات التقليدية

الميزةRedisMySQL/MongoDB
الأداءأسرع بسبب العمل على RAMأبطأ بسبب الاعتماد على الـ Disk
الاستدامة (Persistence)أقل استدامة (دعم Snapshots و AOF فقط)أكثر استدامة
نوع البياناتKey-Value وهياكل بيانات مخصصةجداول وصفوف (Relational/NoSQL)
الحجممحدود بحجم الذاكرة (RAM)يدعم مجموعات بيانات ضخمة

الـRedis هو الحل المثالي للتعامل مع البيانات المؤقتة وسيناريوهات الأداء العالي، ويُكمل قواعد البيانات التقليدية مثل MySQL أو MongoDB في الأنظمة الحديثة.