Redis / المتقدم: الاستمرار والتوزيع والتشغيل / الدرس 16
الذاكرة والإخلاء والسعة
ميز انتهاء TTL والإخلاء وخطأ الذاكرة، وحد البيانات والزيادة والمخازن وذروة الاستمرار بالدليل لا maxmemory عامة.
في هذه الصفحة
أهداف الدرس
- شرح سياسة maxmemory وآثارها على المخبأ والمرجع.
- تفسير ذاكرة العملية والنمو بالنطاق الصحيح.
الإخلاء سياسة فقد تحت ضغط الذاكرة
تطبق Redis السياسة أو ترفض كتابات noeviction عند الحد. يختلف حذف مخبأ يعاد عن عمل مرجعي أو أمن جلسة. LRU وLFU تقريبيتان، وتختار volatile ذات الانتهاء وقد لا تجد مرشحاً مع الدائم. الانتهاء منفصل، وقد يختفي المفتاح قبل موعده بالإخلاء.
اقرأ الذاكرة والمفاتيح في سياقهما
الأوامر فحص توضيحي لجلسة تدريب مصرح بها. تعرض فئات ذاكرة وعدّادات وفق الإصدار دون أرقام صحية مختلقة. قد تصفر ولا تحدد عينة مفتاحاً غاب. اربط الهوية والكاتب وTTL والسياسة، وقد تقدم الإدارة مقاييس وتحد الأوامر؛ اتبعها لا توسيع السلطة.
INFO memory
INFO stats
تعتمد القيم على الخادم والمنح؛ ميز expired_keys وevicted_keys ونطاق الذاكرة لا حدّاً عاماً.
ليست maxmemory سقف RAM للعملية كلها
تختلف الذاكرة المقيمة عن البيانات والإخلاء بسبب المخصص والتجزؤ والعملاء والمزامنة والاستمرار والنسخ. يحسب بعض منفصلاً. اترك هامشاً بالدليل لا كل RAM. قد يثقل مفتاح كبير الزمن والشبكة رغم إجمالي مقبول؛ لا يكفي العدد. افحص الأحجام والأنواع والحمل دون تفريغ حساس.
أظهر افتراض السعة بميزانية محلية
يجمع الحساب بيانات ومخازن وذروة مخترعة ويقارن سعة خيالية، فتناسب البيانات ولا يناسب الإجمالي. ليست توصية أو قياس مخصص. يحتاج الحقيقي رصداً وفشلاً ومزامنة واستعادة، واعتبر الغائب مجهولاً لا احذفه لنتيجة مريحة. لا يغير ذاكرة أو إعداداً أو يختبر حملاً.
capacity_mib = 100
budget = {'dataset': 70, 'buffers': 15, 'persistence_peak': 25}
assert budget['dataset'] < capacity_mib
assert sum(budget.values()) == 110
assert sum(budget.values()) > capacity_mib
يحتاج النموذج110 مقابل100MiB بفئات مخترعة لا مقاييس Redis دقيقة أو صيغة حجم.
أصلح النمو ومرجعية البيانات المثبتين
ميز النمو المشروع والكبير والطابور وTTL والمخازن والسياسة ثم عالج. تختلف كلفة الاحتفاظ والتقسيم والقبول والسعة. لا تفعل إخلاء بيانات لا تقبل الفقد أو تعطل الاستمرار لإخفاء الذروة. راقب المصدر واقبل بالزمن والرفض والإخلاء والتعافي والثوابت لا الرسم فقط.
الأخطاء الشائعة وإصلاحها
OOM command not allowed when used memory > 'maxmemory'.
- لماذا يحدث؟
- تمنع السياسة والذاكرة الكتابة.
- كيف تصلحه؟
- افحص الحساب والمرشح والنمو بالخطة.
- كيف تتجنب تكراره؟
- حد الهامش وراقب الرفض قبل التشبع.
تختفي مفاتيح قبل TTL
- لماذا يحدث؟
- اختلط الإخلاء أو كاتب بالانتهاء.
- كيف تصلحه؟
- اربط العد والسياسة والكتابة.
- كيف تتجنب تكراره؟
- افصل الآليتين بالرصد والعقد.
تتجاوز RAM سقف maxmemory المفترض
- لماذا يحدث؟
- اعتبر حساب الإخلاء الذاكرة الكلية.
- كيف تصلحه؟
- راجع المخازن والمخصص والنسخ والزيادة.
- كيف تتجنب تكراره؟
- حدد الحجم من الذروة لا العدد.
اختبر فهمك
1. كل المفاتيح بلاTTL والسياسة تخلّي volatile فقط. ما الخطر؟
اعرض الحل المشروح
قد لا يوجد أي مرشح مؤهل للإخلاء، فتفشل الكتابات المناسبة تحت ضغط الذاكرة. أكد السياسة الدقيقة ودورة المفاتيح بدلاً من افتراض أن كل سياسة تستطيع إزالة أي مفتاح. اختر علاجاً مقصوداً وفق جواز فقد البيانات، ثم اختبر نتائج الكتابة وعودة التطبيق للمصدر.
2. تنخفض الذاكرة بإخلاء عشوائي. هل نجح الإصلاح؟
اعرض الحل المشروح
لا. ربما فُقد عمل مطلوب أو حالة أمنية، وقد تغرق إخفاقات المخبأ خدمة أخرى. تحقق من مرجعية البيانات وعواقب المفتاح المفقود والزمن وأدلة التعافي. لا يقبل تعديل السعة إلا عندما يبقى فقده وإتاحته ضمن العقد المعلن، وليس لمجرد انخفاض الذاكرة.
أهم ما تعلمته
- الإخلاء والانتهاء والرفض نتائج مختلفة.
- حد الطلب الكامل واحمِ عقد المرجعية.