مخزنُ الكائنات يُبقي نتيجةَ العمل في الذاكرة كي لا يكرّرها الطلبُ التالي. فعلى موقعٍ يسأل قاعدةَ البيانات الأسئلةَ نفسها في كلّ صفحة يكون الأثرُ كبيرًا. وعلى موقعٍ صفحاتُه بطيئةٌ لأسبابٍ أخرى لا يكون شيئًا.
متى ينفع
- نظامُ محتوًى يحمّل عشراتِ صفوف الإعدادات مع كلّ طلب — ووردبريس يسأل عن خياراته في كلّ صفحةٍ بلا استثناء.
- القوائم والتصنيفات وبيانات المستخدمين الوصفيّة: صغيرةٌ مكرّرةٌ متطابقة.
- والجلسات، وإلّا صارت آلافَ الملفّات الصغيرة على القرص.
ومتى لا ينفع
الصفحةُ البطيئةُ بسبب استعلامٍ واحد على جدولٍ كبير تبقى بطيئةً تمامًا. فالمخزنُ يوفّر العمل المكرّر لا العمل الباهظ. أصلح الاستعلام أوّلًا؛ فتخزينه لا يخفي إلّا مقدارَ سوئه حتى يبرد المخزن.
اضبط حدَّ ذاكرةٍ وسياسةَ طرد
maxmemory 256mb
maxmemory-policy allkeys-lru
بلا maxmemory ينمو Redis حتى لا تبقى في الجهاز ذاكرة، فتقتل النواةُ شيئًا — وهو قاعدة البيانات في الغالب. أمّا allkeys-lru فتطرح المفتاحَ الأقدم استعمالًا بدل ذلك، وهو ما ينبغي لمخزنٍ أن يفعله.
اربطه بالمضيف المحلّيّ
ليس في Redis توثيقٌ افتراضيًّا. وRedis الذي يُبلَغ من الإنترنت بابٌ مفتوح: إذ يمكن أن يُؤمَر بكتابة ملفّات. اربطه بـ 127.0.0.1 واشترط كلمة مرور.
bind 127.0.0.1
requirepass a-long-random-string
تأكّد أنّه يُستعمَل فعلًا
redis-cli info stats | grep -E "keyspace_hits|keyspace_misses"
الإصاباتُ فوق الإخفاقات بكثيرٍ تعني أنّه يعمل. وغلبةُ الإخفاقات تعني أنّ المفاتيح تنتهي أسرع من اللازم أو أنّ شيئًا يفرّغها مع كلّ طلب.
ومخزنُ الصفحات ومخزنُ الكائنات شيئان مختلفان. فمخزنُ الصفحات يقدّم صفحةً كاملةً جاهزة وينفع الزائرَ المجهول، ومخزنُ الكائنات ينفع المسجَّلَ الدخولِ الذي لا تُتشارَك صفحاته.