لماذا يُسرِّع Redis المواقع
تُعيد معظم المواقع الديناميكية — ووردبريس وLaravel وMagento وتطبيقات PHP المخصصة — بناء البيانات نفسها في كل طلب: القوائم والإعدادات وجلسات المستخدمين ونتائج الاستعلامات. وكل عملية إعادة بناء تستدعي قاعدة البيانات. وعند زيادة الزيارات تصبح قاعدة البيانات عنق الزجاجة وتتباطأ الصفحات.
Redis هو مخزن بيانات يعمل في الذاكرة. فبدلًا من طرح السؤال نفسه على قاعدة البيانات مرارًا، يطرحه تطبيقك على Redis الذي يُجيب من ذاكرة الوصول العشوائي في أقل من جزء من الألف من الثانية بكثير. والنتيجة عدد أقل من استعلامات قاعدة البيانات، واستهلاك أقل للمعالج، وتحميل أسرع للصفحات — خاصة على المواقع المزدحمة.
يتناول هذا الدليل تثبيت Redis وتأمينه وضبطه للتخزين المؤقت وربطه بتطبيق ووردبريس أو PHP، ثم التحقق من التحسُّن. وتنطبق الخطوات على أي خادم لينكس، بما في ذلك خادم VPS أو خادم سحابي من Skyline Cloud مُستضاف داخل المملكة.
المتطلبات المسبقة
- خادم لينكس (Ubuntu 22.04/24.04 أو ما شابه) مع صلاحية الجذر أو
sudo. - تطبيق ويب يدعم خلفية تخزين مؤقت/كائنات (ووردبريس، Laravel، إلخ).
- إضافة
redisالخاصة بـ PHP إن كان تطبيقك مبنيًا على PHP.
الخطوة 1 — تثبيت Redis
على Debian/Ubuntu:
sudo apt update
sudo apt install redis-server -y
تأكد من أنه يعمل:
sudo systemctl enable --now redis-server
redis-cli ping
يجب أن تظهر لك PONG. تحقق من الإصدار (استخدم Redis 6 أو أحدث للحصول على قوائم التحكم بالوصول ACLs ودعم TLS):
redis-server --version
الخطوة 2 — تأمين Redis
افتراضيًا يستمع Redis على المضيف المحلي فقط، وهذا هو الصحيح في إعداد الخادم الواحد حيث يعمل تطبيق الويب وRedis على الجهاز نفسه. تحقق من ذلك في /etc/redis/redis.conf:
bind 127.0.0.1 -::1
protected-mode yes
اضبط دائمًا كلمة مرور حتى على المضيف المحلي، كطبقة دفاع إضافية. أنشئ كلمة مرور قوية وأضفها إلى الإعداد:
requirepass YOUR_STRONG_PASSWORD_HERE
إذا — وفقط إذا — كان يجب الوصول إلى Redis من خادم آخر، فلا تفتح عنوان الربط ببساطة. بل فعِّل TLS وقائمة سماح في الجدار الناري، أو أبقِ Redis خاصًا واتصل عبر الشبكة الداخلية. إن كشف Redis غير المُصادَق على الإنترنت العام من أكثر أخطاء الإعداد استغلالًا.
أعد التشغيل لتطبيق التغييرات:
sudo systemctl restart redis-server
اختبر المصادقة:
redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' ping
الخطوة 3 — ضبط Redis للتخزين المؤقت
يجب ألا تستنفد الذاكرة المؤقتة ذاكرة خادمك أبدًا. اضبط حدًا أقصى للذاكرة وسياسة إخلاء كي يتخلص Redis من المدخلات القديمة بدلًا من الانهيار. عدِّل /etc/redis/redis.conf:
maxmemory 256mb
maxmemory-policy allkeys-lru
maxmemoryيحدد كم من ذاكرة الوصول العشوائي يجوز لـ Redis استخدامها. والإرشاد الشائع هو 60–75% من الذاكرة التي يمكنك تخصيصها للتخزين المؤقت؛ ابدأ بـ256mbعلى موقع صغير وارفعها عند الحاجة.allkeys-lruيُخلي المفاتيح الأقل استخدامًا مؤخرًا عند بلوغ الحد. وهذه هي السياسة الصحيحة لذاكرة تخزين مؤقت خالصة تكون فيها كل المفاتيح قابلة للاستغناء. (أما لمخازن الجلسات حيث تريد إخلاء المفاتيح ذات مدة الصلاحية TTL فقط، فاستخدمvolatile-lruبدلًا منها.)
أعد تشغيل Redis مجددًا بعد التعديل:
sudo systemctl restart redis-server
الخطوة 4 — ربط ووردبريس بـ Redis
ووردبريس هو الحالة الأكثر شيوعًا. ثبِّت أولًا إضافة PHP:
sudo apt install php-redis -y
sudo systemctl restart php8.3-fpm # طابق إصدار PHP لديك
أضف إعدادات الاتصال إلى wp-config.php، فوق سطر /* That's all, stop editing! */:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'YOUR_STRONG_PASSWORD_HERE' );
define( 'WP_REDIS_PREFIX', 'site1:' );
define( 'WP_REDIS_DATABASE', 0 );
يصبح WP_REDIS_PREFIX مهمًا عندما تتشارك عدة مواقع نسخة Redis واحدة — فالبادئة الفريدة لكل موقع تمنع تصادم الذاكرة المؤقتة.
ثبِّت وفعِّل إضافة Redis Object Cache. من لوحة التحكم اذهب إلى الإضافات ← أضف جديدًا، وثبِّت Redis Object Cache، وفعِّلها، ثم افتح الإعدادات ← Redis وانقر Enable Object Cache. أو باستخدام WP-CLI:
wp plugin install redis-cache --activate
wp redis enable
تأكد من الحالة:
wp redis status
يجب أن تُظهِر Status: Connected وDrop-in: Valid.
الخطوة 5 — ربط تطبيق PHP بسيط
إن لم تكن تستخدم ووردبريس، فإن إضافة phpredis تمنحك عميلًا مباشرًا. وإليك نمط «cache-aside» بسيطًا:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('YOUR_STRONG_PASSWORD_HERE');
$key = 'products:featured';
$cached = $redis->get($key);
if ($cached === false) {
$data = expensive_db_query(); // استدعاء قاعدة بياناتك
$redis->setex($key, 300, serialize($data)); // التخزين لمدة 300 ثانية
} else {
$data = unserialize($cached);
}
النمط واحد دائمًا: تفقَّد الذاكرة المؤقتة، وأعِد القيمة عند العثور عليها، وعند عدم العثور احسب القيمة وخزِّنها بمدة صلاحية TTL معقولة ثم أعِدها. وتجعل أُطر العمل مثل Laravel ذلك أبسط — اضبط CACHE_STORE=redis (وSESSION_DRIVER=redis) في ملف .env.
الخطوة 6 — التحقق من التحسُّن
راقب نشاط الذاكرة المؤقتة مباشرةً:
redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' monitor
تحقق من نسبة الإصابة — الذاكرة المؤقتة السليمة تُظهِر إصابات (hits) أكثر بكثير من الإخفاقات (misses):
redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' info stats | grep keyspace
قِس أداء صفحة قبل تفعيل Redis وبعده باستخدام ab (Apache Bench) أو curl:
ab -n 200 -c 10 https://your-site.example/
قارن متوسط زمن الاستجابة بين التشغيلين. على صفحة رئيسية لووردبريس كثيفة الاعتماد على قاعدة البيانات سترى عادةً انخفاضًا ملموسًا في زمن أول بايت وانخفاضًا في حِمل MySQL.
| الإعداد | القيمة الموصى بها | الغرض |
|---|---|---|
bind |
127.0.0.1 -::1 |
وصول محلي فقط |
requirepass |
سر قوي | المصادقة |
maxmemory |
256mb (ثم اضبط) | منع نفاد الذاكرة |
maxmemory-policy |
allkeys-lru |
إخلاء مفاتيح الذاكرة القديمة |
WP_REDIS_PREFIX |
فريد لكل موقع | تجنب التصادم |
أخطاء شائعة
- عدم وجود حد للذاكرة. بدون
maxmemoryقد يستهلك Redis كل ذاكرة الوصول العشوائي ويُسقِط الخادم. اضبط دائمًا حدًا أقصى. - الذاكرة المؤقتة غير مفعَّلة فعليًا. تثبيت الإضافة لا يكفي؛ يجب تفعيل الـ drop-in (
wp redis enable) والتأكد من ظهورConnected. - محتوى قديم. قد يقدِّم التخزين المؤقت المفرط صفحات قديمة. استخدم مدد صلاحية TTL معقولة وامسح الذاكرة عند النشر (
wp redis flushأوFLUSHDB). - Redis مكشوف. لا تربط Redis أبدًا بعنوان IP عام دون TLS ومصادقة.
شغِّله على سحابة داخل المملكة
يتكامل Redis تمامًا مع خادم بحجم مناسب. على Skyline Cloud يمكنك تشغيل Redis على خادم VPS أو خادم سحابي مُستضاف داخل المملكة العربية السعودية، مع إبقاء بياناتك وطبقة التخزين المؤقت متوافقة مع متطلبات نظام حماية البيانات الشخصية (PDPL) والهيئة الوطنية للأمن السيبراني (NCA)، مع دعم محلي بالعربية. اقرِنه بـ بريد الأعمال المُدار للحصول على منظومة متكاملة، واستكشف المزيد من أدلة الأداء في مركز استضافة المواقع السعودية.
جاهز لنشر موقع أسرع؟ أنشئ حساب Skyline Cloud وأطلِق خادمًا داخل المملكة في دقائق.
Comments
0 total · 0 threads