Home Knowledge base Skyline Cloud كيفية استخدام تخزين Redis المؤقت لمواقع أسرع KNOWLEDGE BASE

كيفية استخدام تخزين Redis المؤقت لمواقع أسرع

دليل عملي خطوة بخطوة لتثبيت Redis وتأمينه وضبطه كذاكرة تخزين مؤقت للكائنات لتقليل الحِمل على قاعدة البيانات بشكل كبير وتسريع موقعك — مع أمثلة على ووردبريس وPHP والتحقق من الأداء.

لماذا يُسرِّع 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=redisSESSION_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 وأطلِق خادمًا داخل المملكة في دقائق.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.