دليل النشر

استضافة ‎Redis‎ على خادم ‎VPS‎: الدليل الشامل

انشر على VPS Cloud ←

دليل عملي

استضافة ‎Redis‎ على خادم ‎VPS‎: الدليل الشامل

قواعد البيانات10 دقائق للقراءةعدد الخطوات: 7

‎Redis‎ هو أداة الأداء متعددة الاستخدامات: تخزين مؤقت وجلسات وطوابير مهام وعدّادات في الوقت الفعلي و‎pub/sub‎. استضافته ذاتيًا على خادم ‎VPS‎ تمنحك تحكمًا كاملاً في الذاكرة وفي الشبكة التي تفصله عن تطبيقك، دون دفع السعر المرتفع لعروض ‎Redis‎ المُدارة. يغطي هذا الدليل النشر الكامل — من تهيئة الأمان إلى الاستمرارية، مرورًا باستكشاف أكثر الأخطاء شيوعًا.

المحتويات· لماذا تستضيف ‎Redis‎ ذاتيًا على خادم ‎VPS‎1/8
  1. 01لماذا تستضيف ‎Redis‎ ذاتيًا على خادم ‎VPS‎
  2. 02الفوائد الملموسة لـ ‎Redis‎ مُستضاف ذاتيًا
  3. 03المتطلبات المادية والبرمجية
  4. 04نشر ‎Redis‎ باستخدام ‎Docker‎ في بيئة الإنتاج
  5. 05استكشاف الأخطاء: أكثر الأخطاء شيوعًا
  6. 06التوافر العالي: ‎Sentinel‎ والعنقود
  7. 07التحديثات و‎Valkey‎ كبديل
  8. 08الوثائق الرسمية

لماذا تستضيف ‎Redis‎ ذاتيًا على خادم ‎VPS‎

يعمل ‎Redis‎ في الذاكرة: يعتمد أداؤه مباشرة على ‎RAM‎ وزمن استجابة الشبكة. تفرض العروض المُدارة سعرًا مرتفعًا جدًا على كل غيغابايت من ‎RAM‎ وتضع حدودًا قصوى للاتصالات. على خادم ‎VPS‎، تحدد حجم ‎RAM‎ وفقًا لحاجتك الفعلية، وتهيّئ بحرية maxmemory وسياسة الإخلاء (allkeys-lru وvolatile-ttl...)، وتفعّل استمرارية ‎RDB‎ و/أو ‎AOF‎ حسب درجة تحمّلك لفقدان البيانات. سواء لتخزين مؤقت تطبيقي، أو وسيط مهام (‎Sidekiq‎ أو ‎BullMQ‎ أو ‎Celery‎)، أو مخزن جلسات، فإن ‎Redis‎ الملاصق لتطبيقك على الشبكة الخاصة نفسها يلغي زمن الاستجابة بين مراكز البيانات ويخفّض التكلفة بشكل جذري.

الفوائد الملموسة لـ ‎Redis‎ مُستضاف ذاتيًا

  • زمن استجابة أقل من ميلي ثانية إذا كان ‎Redis‎ يعمل على خادم ‎VPS‎ نفسه أو الشبكة الخاصة نفسها التي يعمل عليها تطبيقك.
  • تحكم في maxmemory وسياسة الإخلاء وفقًا لاستخدامك كتخزين مؤقت أو طابور مهام.
  • استمرارية حسب اختيارك: ‎RDB‎ (لقطات)، أو ‎AOF‎ (سجل)، أو كلاهما لتحقيق المتانة.
  • تكلفة ‎RAM‎ دون مبالغة في الفاتورة: تدفع اشتراك خادم ‎VPS‎، لا سعر الغيغابايت من الذاكرة المميزة.
  • وحدات حرة: ‎RediSearch‎ و‎RedisJSON‎ و‎RedisBloom‎ حسب احتياجاتك.
  • لا حد أقصى تعسفي لعدد اتصالات العملاء المتزامنة.

المتطلبات المادية والبرمجية

بما أن ‎Redis‎ يعمل في الذاكرة، فإن ‎RAM‎ هي المهمة، لا المعالج. لتخزين مؤقت متواضع أو مخزن جلسات، يكفي معالج افتراضي واحد (1 vCPU) و1 إلى 2 غيغابايت من ‎RAM‎ — فاستخدام ‎Redis‎ مفتوح المصدر للمعالج منخفض لأنه أحادي الخيط للأوامر (إدخال/إخراج الشبكة غير متزامن). أما إذا كان ‎Redis‎ يعمل كوسيط لآلاف المهام في الطابور أو يخزّن مجموعات بيانات بحجم عدة غيغابايتات في الذاكرة، فحدّد حجم ‎RAM‎ بما لا يقل عن ضعف قيمة maxmemory المستهدفة لاستيعاب النسخ عند الكتابة (‎copy-on-write‎) أثناء لقطات ‎RDB‎.

على صعيد القرص، خطط لمساحة تعادل 2× حجم مجموعة بياناتك إذا فعّلت استمرارية ‎RDB‎ أو ‎AOF‎. على الصعيد البرمجي: ‎Ubuntu 22.04/24.04 LTS‎، و‎Docker‎ و‎Compose v2‎، ووحدة تخزين دائمة لـ ‎AOF/RDB‎ إذا فعّلت الاستمرارية، وضبط vm.overcommit_memory=1 على المضيف لتجنّب إخفاقات ‎fork‎ أثناء النسخ الاحتياطي.

نشر ‎Redis‎ باستخدام ‎Docker‎ في بيئة الإنتاج

  1. تهيئة المضيف

    ثبّت ‎Docker‎، ثم اضبط vm.overcommit_memory=1 عبر sysctl لجعل اللقطات موثوقة، وعطّل ‎Transparent Huge Pages‎. أغلق المنفذ ‎6379‎ نحو الخارج: فـ‎Redis‎ مكشوفًا دون كلمة مرور هدف تقليدي لمنقّبي العملات المشفرة.

    echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
    sysctl -p
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. كتابة ملف ‎docker-compose.yml‎

    أعلن عن خدمة redis:7-alpine بأمر مخصص يشير إلى ملف redis.conf مركّب للقراءة فقط. فعّل requirepass، وحدّد maxmemory وmaxmemory-policy، وركّب وحدة تخزين لـ /data إذا أردت الاستمرارية.

    services:
      redis:
        image: redis:7-alpine
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ./redis.conf:/etc/redis/redis.conf:ro
          - redis_data:/data
        restart: unless-stopped
        ports:
          - "127.0.0.1:6379:6379"
    volumes:
      redis_data:
  3. تهيئة الأمان

    في ملف redis.conf، يرتكز الأمان على عدة طبقات متكاملة. الأولى هي ربط الشبكة: bind 127.0.0.1 أو عنوان ‎IP‎ شبكتك الخاصة — لا تستمع أبدًا على 0.0.0.0 دون حماية إضافية. الثانية هي المصادقة: requirepass كلمة_مرور_قوية لـ ‎Redis 6‎ وما قبله؛ لـ ‎Redis 7‎، يُفضَّل استخدام ‎ACL‎ الذي يتيح إنشاء مستخدمين بصلاحيات دقيقة:

    bind 127.0.0.1
    requirepass كلمة_مرور_قوية
    aclfile /etc/redis/users.acl
    rename-command FLUSHALL ""
    rename-command CONFIG ""
    rename-command DEBUG ""

    يمكن لملف users.acl أن يُعلن:

    user app_user on >كلمة_مرور ~* +@read +@write -@dangerous
    user default off

    للوصول عن بُعد مشفرًا، فعّل ‎TLS‎ الأصلي في ‎Redis‎ (متاح منذ ‎Redis 6‎):

    tls-port 6380
    tls-cert-file /certs/redis.crt
    tls-key-file /certs/redis.key
    tls-ca-cert-file /certs/ca.crt
  4. اختيار استراتيجية الاستمرارية

    يوفر ‎Redis‎ آليتين للاستمرارية قابلتين للجمع.

    ‎RDB‎ (لقطة): يكتب ‎Redis‎ لقطة آنية لمجموعة البيانات على القرص بفترات قابلة للضبط. سريع عند إعادة التشغيل، لكنك تفقد البيانات المكتوبة منذ آخر لقطة في حالة عطل.

    save 900 1
    save 300 10
    save 60 10000

    ‎AOF‎ (ملف إضافي فقط): كل أمر كتابة يُسجَّل. أكثر أمانًا، أبطأ قليلًا. appendfsync everysec هو التوازن الجيد: بحد أقصى فقدان بيانات ثانية واحدة.

    appendonly yes
    appendfsync everysec
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb

    الجمع بين ‎RDB‎ و‎AOF‎: عند إعادة التشغيل، يستخدم ‎Redis‎ ملف ‎AOF‎ (الأكثر اكتمالًا)، بينما يُسرّع ‎RDB‎ النسخ الاحتياطية الدورية الكاملة. هذه هي الاستراتيجية الموصى بها لوسطاء المهام الحرجة.

    لـتخزين مؤقت خالص حيث فقدان البيانات مقبول، عطّل الاستمرارية: save "" وappendonly no — ستكسب أداءً ومساحة قرص.

  5. توصيل تطبيقك

    شغّل باستخدام docker compose up -d واختبر بـ docker compose exec redis redis-cli -a كلمة_مرور ping. وجّه تطبيقك إلى شبكة ‎Docker‎ الداخلية بدلًا من عنوان ‎IP‎ عام، لتحسين زمن الاستجابة والأمان.

    docker compose exec redis redis-cli -a كلمة_مرور ping
    # PONG
    docker compose exec redis redis-cli -a كلمة_مرور CONFIG GET maxmemory
  6. مراقبة الذاكرة

    راقب used_memory وevicted_keys عبر redis-cli INFO. إذا ارتفعت عمليات الإخلاء، فزد ذاكرة ‎RAM‎ أو حسّن السياسة. اضبط تنبيهًا عندما يتجاوز استخدام الذاكرة 80% من maxmemory.

    redis-cli -a كلمة_مرور INFO memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio'
    redis-cli -a كلمة_مرور INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'
  7. أول تسجيل دخول

    افتح الرابط: تظهر واجهة ‎RedisInsight‎ مباشرة، دون أي طلب لبيانات الدخول إطلاقًا (تكتفي بالموافقة على شروط الاستخدام في الشاشة الأولى)، وتكون قاعدة بيانات ‎Redis‎ المحلية متاحة فيها للقراءة والكتابة. لا تربط نطاقًا عموميًا بهذه الواجهة دون حماية أمامها.

استكشاف الأخطاء: أكثر الأخطاء شيوعًا

إليك الأخطاء التي ستواجهها في أغلب الأحيان عند تشغيل ‎Redis‎ على خادم ‎VPS‎، مع سببها وعلاجها.

  • MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist on disk — يحاول ‎Redis‎ أخذ لقطة لكن ‎fork‎ يفشل. السبب: vm.overcommit_memory معطى القيمة 0 على المضيف. الحل: sysctl vm.overcommit_memory=1 (دائمًا في /etc/sysctl.conf). إذا كنت تستخدم ‎Docker‎، يجب ضبط هذا المعامل على مضيف ‎Docker‎، لا داخل الحاوية.
  • ERR max number of clients reached — تجاوز عدد الاتصالات المتزامنة قيمة maxclients (الافتراضي: 10,000). الأسباب الشائعة: مجمع اتصالات مهيأ بشكل خاطئ في التطبيق (‎Sidekiq‎ أو ‎Laravel Horizon‎ مثلًا) أو اتصالات غير مغلقة. الحل: زد قيمة maxclients في redis.conf وتحقق من تهيئة المجمع في جانب التطبيق. الأمر redis-cli CLIENT LIST يُدرج الاتصالات النشطة.
  • قاتل ‎OOM‎ يقتل عملية ‎Redis‎ — يقتل نواة ‎Linux‎ عملية ‎Redis‎ بسبب نقص الذاكرة الحرة. السبب: maxmemory غير محدد أو كبير جدًا، مقترنًا بالنسخ عند الكتابة لـ ‎fork‎ الخاص بـ ‎RDB‎. الحل: اضبط maxmemory على 60-70% من ‎RAM‎ المتاحة، واختر سياسة إخلاء (maxmemory-policy allkeys-lru للتخزين المؤقت، أو noeviction للوسيط)، وخطط لمساحة تعادل 2× حجم مجموعة البيانات. راقب /var/log/syslog لرسائل Out of memory: Kill process.
  • Could not create server TCP listening socket 0.0.0.0:6379: bind: Address already in use — عملية أخرى تشغل المنفذ 6379. حدّدها بـ ss -tlnp | grep 6379 وأوقفها، أو غيّر منفذ ‎Redis‎ في تهيئتك. على خوادم ‎VPS‎ التي تثبّت ‎Redis‎ عبر apt، قد يتعارض خدمة النظام مع حاوية ‎Docker‎.

التوافر العالي: ‎Sentinel‎ والعنقود

لأعباء العمل الحرجة التي لا يُقبل فيها توقف ‎Redis‎، يتوفر حلّان.

‎Redis Sentinel‎ هو حل التوافر العالي لبنية المعلم/النسخ. انشر ثلاثة عقد ‎Sentinel‎ على ثلاثة خوادم ‎VPS‎ منفصلة: يراقب ‎Sentinel‎ المعلم، ويكتشف عطله، ويُرقّي نسخة تلقائيًا. تتصل تطبيقاتك عبر خدمة ‎Sentinel‎ بدلًا من الاتصال مباشرة بالمعلم — فتكون شفافة أمام عملية الانتقال.

‎Redis Cluster‎ يقسّم البيانات على عدة عقد (تقسيم أفقي) ويوفر توافرًا عاليًا مدمجًا. يتطلب 6 عقد على الأقل (3 معلمين + 3 نسخ) وتكييفًا على مستوى العميل. احتفظ به لمجموعات البيانات التي تتجاوز ‎RAM‎ خادم واحد أو لأعباء العمل التي تحتاج إنتاجية كتابة عالية جدًا.

للغالبية العظمى من حالات الاستخدام على ‎VPS‎، ‎Sentinel‎ على 3 عقد هو الإجابة الصحيحة: أبسط في التشغيل، ومتوافق مع جميع عملاء ‎Redis‎ القياسيين، وكافٍ لمجموعات بيانات بحجم بضع عشرات من الغيغابايتات.

التحديثات و‎Valkey‎ كبديل

حول الإصدارات. ‎Redis 7.4‎ هي فرع ‎LTS‎ المستقر الحالي (‎7.4.11‎ وقت كتابة هذا الدليل). ‎Redis 8‎ هو أحدث إصدار رئيسي، صدر في مايو 2025، وأُضيفت معه رخصة ‎AGPLv3‎ خيارًا ثالثًا — إلى جانب ‎RSALv2‎ و‎SSPLv1‎ اللتين اعتُمدتا في مارس 2024. للهجرة من ‎Redis 7.x‎ إلى ‎Redis 8‎، راجع ملاحظات الإصدار الرسمية.

حول الرخصة. في مارس 2024، تخلّت ‎Redis Ltd.‎ عن رخصة ‎BSD 3-Clause‎ لصالح رخصة مزدوجة ‎RSALv2 + SSPLv1‎ (غير معتمدة من ‎OSI‎). رداً على ذلك، أنشأت ‎Linux Foundation‎ ‎Valkey‎ في 28 مارس 2024 — نسخة مشتقة من ‎Redis 7.2.4‎ تحت رخصة ‎BSD 3-Clause‎، بدعم من ‎AWS‎ و‎Google Cloud‎ و‎Oracle‎ وأعضاء مؤسسين آخرين. ‎Valkey‎ بديل مباشر لـ ‎Redis‎: واجهات برمجة التطبيقات والبروتوكولات متوافقة، والهجرة شفافة في الغالب. مقال مخصص يقارن المشروعين بالتفصيل: ‏‎Valkey‎ مقابل ‎Redis‎ في 2026: هل تهاجر؟

للاستخدامات الخاصة الشائعة (تخزين مؤقت تطبيقي، وسيط مهام، مخزن جلسات على بنيتك التحتية)، يبقى ‎Redis 7.x‎ أو ‎8‎ قابلًا للاستخدام الكامل دون أي إشكالية في الترخيص.

راقب نسبة keyspace_hits / keyspace_misses عبر INFO stats: انخفاض معدل الإصابة يعني أن تخزينك المؤقت غير محدد الحجم بشكل صحيح أو أن قيم ‎TTL‎ قصيرة جدًا. لأعباء العمل الحرجة، انشر ‎Redis Sentinel‎ على ثلاثة خوادم ‎VPS‎ للحصول على تجاوز فشل تلقائي: إذا سقط الخادم الرئيسي، يُرقّى تابع دون تدخل، وتُعاد توجيه تطبيقاتك عبر خدمة ‎Sentinel‎.

الوثائق الرسمية

للتهيئة المتقدمة والخيارات الخاصة بالأداة، راجع الوثائق الرسمية لـ ‎Redis‎. يغطّي هذا الدليل الإطلاق على خادم ‎VPS‎؛ وتبقى وثائق المطوّر المرجعَ للضبط الدقيق والتحديثات الكبرى وحالات الاستخدام الخاصة.

شغّل Redis بأقصى سرعة

يمنحك خادم ServOrbit Cloud VPS مع قالب Docker وذاكرة RAM مخصصة زمن الاستجابة والذاكرة اللازمين لتشغيل Redis عالي الأداء، سواء كتخزين مؤقت أو وسيط للمهام (broker).

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة