Redis: التخزين المؤقت وقوائم الانتظار
تثبيت Redis على VDS، وكلمة المرور والربط بعنوان محلي، وحد الذاكرة وسياسة الإخلاء، والفرق بين التخزين المؤقت وقائمة الانتظار.
آخر تحديث 23 أغسطس 2026
Redis يحتفظ بالبيانات في الذاكرة، ولهذا يُستخدم للتخزين المؤقت والجلسات والعدادات وقوائم المهام. على VPS يكون مفيدًا طالما أنه يتسع في الذاكرة: فمجموعة العمل الأكبر من الذاكرة الحرة لم تعد تسريعًا بل سببًا للانهيارات.
التثبيت
apt update && apt install -y redis-server # Debian, Ubuntu
dnf install -y redis # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping
استجابة PONG تعني أن الخادم يعمل.
الإعداد المطلوب
ملف /etc/redis/redis.conf:
bind 127.0.0.1
protected-mode yes
requirepass long-random-password
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'password' ping
يكتشف الماسحون الضوئيون Redis مكشوفًا على الإنترنت دون كلمة مرور في غضون دقائق ويستخدمونه للتعدين. إذا كان تطبيقك على الجهاز نفسه، فأبقِ bind 127.0.0.1 ولا تكشف المنفذ 6379 للخارج. إذا كنت بحاجة إلى وصول خارجي، فاستخدم فقط نفق SSH أو VPN.
الذاكرة والإخلاء
اضبط maxmemory صراحةً: فبدونه ينمو Redis حتى يبدأ النظام بإنهاء العمليات. من المعقول تخصيص ربع ذاكرة المستوى له.
| المستوى | ذاكرة الجهاز | maxmemory |
|---|---|---|
| VDS-1 | 2 GB | 256 MB |
| VDS-2 | 4 GB | 512 MB |
| VDS-3 | 8 GB | 1–2 GB |
| VDS-5 | 24 GB | 4–6 GB |
تعتمد السياسة على الدور:
- التخزين المؤقت —
allkeys-lru، تُخلَى المفاتيح القديمة بصمت؛ - قائمة المهام —
noeviction، فقدان مهمة غير مقبول، وخطأ الكتابة أفضل.
لا تخلط التخزين المؤقت وقائمة المهام في قاعدة بيانات واحدة تحديدًا بسبب هذا التناقض. افصلهما في رقمي قاعدة بيانات مختلفين (SELECT 1) أو في نسختين.
الحفظ على القرص
افتراضيًا، يُفرّغ Redis نسخة لحظية إلى dump.rdb بشكل دوري. بالنسبة للتخزين المؤقت البحت فهذه كتابة غير ضرورية على القرص — عطّل save. أما بالنسبة لقوائم المهام ففعّل appendonly yes: بهذه الطريقة لن تُفقد المهام بعد إعادة تشغيل الجهاز.
ضع في اعتبارك أن سرعة الكتابة على القرص محدودة بالمستوى: 60 MB/s لكل نواة، لا تقل عن 60 ولا تزيد عن 400 MB/s.
المراقبة
redis-cli -a 'password' info memory
redis-cli -a 'password' info stats
redis-cli -a 'password' --stat
redis-cli -a 'password' slowlog get 10
المقياس الأساسي هو evicted_keys: النمو المستمر يعني أن الذاكرة غير كافية وأن التخزين المؤقت لا يغطي تكلفته.
الأخطاء الشائعة
| العَرَض | السبب |
|---|---|
NOAUTH Authentication required | لم تُمنح كلمة المرور للتطبيق |
OOM command not allowed | بلوغ maxmemory مع سياسة noeviction |
DENIED Redis is running in protected mode | وصول خارجي مع bind 127.0.0.1 — وهذا مقصود |
| اختفاء البيانات بعد إعادة التشغيل | الحفظ على القرص غير مفعّل |
| دخول الجهاز في swap | مجموع maxmemory والخدمات الأخرى يتجاوز ذاكرة المستوى |
لا تستخدم
KEYS *على خادم إنتاجي: فالأمر يوقف Redis أثناء مروره على جميع المفاتيح. استخدمSCANللمرور عليها.