محتويات الدورة

Redis / الأساسي: المفاتيح والبنى المحدودة / الدرس 6

مدة TTL والانتهاء والصلاحية

افصل موعد انتهاء المفتاح عن صلاحية التطبيق والإخلاء والاستمرار، ونمذج الزمن دون ادعاء حذف فيزيائي دقيق من مثال.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تفسير قيم TTL الخاصة والكتابات المغيرة للانتهاء.
  • تصميم فحص الصلاحية وعمر المخبأ من المتطلبات.

الانتهاء آلية واحدة من الدورة

تعطي TTL موعداً يصبح بعده المفتاح منتهياً منطقياً. تكتشفه آليات نشطة وعند الوصول، فلا تجعل التنظيف مجدولاً فيزيائياً دقيقاً عاماً. قد تحتاج الصلاحية وقتاً أو إصداراً داخل القيمة عند الرفض الفوري. يزيل الإخلاء بذاكرة لا وقت، والحذف والتعافي سببان آخران؛ شخص الآلية لا تسم كل فقد انتهاء.

اقرأ قيم TTL الخاصة صحيحاً

تعيد TTL ثواني وPTTL مللي ثانية. تعني -2 الغياب و-1 الوجود دون انتهاء في الأساس الحديث. تتغير الموجبة بالزمن لذا يثبت المثال الحالتين فقط بنطاق مؤقت بلا منافس. لا تثبت الكتابة وجود انتهاء، وافحص الخيارات والهوية وتأثير السياسة والمنافسة قبل لوم الساعة.

redis قيم TTL خاصة مستقرة توضيحية
SET lab:ttl:persistent value
TTL lab:ttl:persistent
TTL lab:ttl:never-created
الناتج المتوقع
-1
-2

مع غياب الثاني يتوقع -1 و-2 ولا نختلق عدّاً تنازلياً.

أنشئ القيمة والموعد دون فجوة أمرين

ترفق EX أو PX الانتهاء بعملية واحدة، وقد تترك فجوة SET ثم EXPIRE مفتاحاً دائماً عند فشل العميل. تحفظ بعض الكتابات الانتهاء وتزيله SET العادية عادة. يختلف الكل عن انتهاء الحقل الحديث. حدد مالك التجديد وهل تمدده القراءة؛ قد تبقي النافذة المنزلقة حالة ملغاة. اختبر التجديد والاستبدال والحذف منفصلة.

نمذج الصلاحية بساعة معلنة

يفحص النموذج موعداً اصطناعياً ويعد القيمة غير صالحة عنده. لا يحاكي دورة Redis أو ساعة النظام أو اختلاف الساعات. حدد مصدر الزمن والانحراف ولا تثق بوقت العميل دون تحقق. يكشف الحد أخطاء المساواة ويفصل الإذن عن التنظيف، دون رمز فعلي أو خدمة أو وعد حذف آني.

python نموذج حد انتهاء محلي
def valid_at(now_ms, expires_at_ms):
    return now_ms < expires_at_ms

assert valid_at(999, 1000)
assert not valid_at(1000, 1000)
assert not valid_at(1001, 1000)

تصح عند999 وتبطل عند1000 و1001؛ هذه قاعدة تطبيق لا قياس تنظيف Redis.

اختر الحداثة وسلوك الحمل معاً

تقلل القصيرة بعض القدم وتزيد الفقد وحمل المصدر، وتعكس الطويلة الموازنة. يوزع jitter التزامن ضمن سياسة الحداثة. يحتاج التخزين السلبي والتجديد والمحتوى القديم قواعد للمفقود والإلغاء. لا تثبت TTL صحة القفل، وتضيف المزامنة والتعافي أسئلة. سجل الموعد وأقصى قدم وإعادة التحميل واختبرها مع المرجع والفشل.

الأخطاء الشائعة وإصلاحها

تقرأ -1 كغياب

لماذا يحدث؟
اختلط الدائم بالغائب.
كيف تصلحه؟
فسر -1 دون انتهاء و-2 غائباً.
كيف تتجنب تكراره؟
اختبر الحالتين منفصلتين.

يترك انهيار العميل قيمة بلا انتهاء

لماذا يحدث؟
كتبت القيمة والانتهاء منفصلين.
كيف تصلحه؟
استخدم صيغة ذرية مناسبة.
كيف تتجنب تكراره؟
ضمّن فشل الفاصل في الاختبارات.

يبقى الرمز صالحاً لأنه بالذاكرة

لماذا يحدث؟
اختلط الوجود الفيزيائي بالصلاحية.
كيف تصلحه؟
افرض الصلاحية عند القرار.
كيف تتجنب تكراره؟
افصل صلاحية الوصول والتنظيف والإخلاء.

اختبر فهمك

1. يوجد المفتاح وتعيد TTL -1. ما الاستنتاج؟

اعرض الحل المشروح

الاستنتاج المدعوم هو أن المفتاح حالياً بلا انتهاء وفق دلالة الأمر الحديثة. ليس المفتاح غائباً، ولا يثبت ذلك أن الديمومة مقصودة. افحص الكاتب الذي أنشأه أو استبدله وقارن سلوكه بسياسة الدورة. قد تكون SET عادية أزالت موعداً سابقاً، لذلك تحتاج صحة المحتوى وصحة الانتهاء تحققين منفصلين.

2. هل يجوز لـjitter تمديد إذن مخبأ وراء أقصى حداثة؟

اعرض الحل المشروح

لا يجوز ذلك لمجرد توزيع الحمل. اختر حدود jitter التي تحقق متطلبات الحداثة والإلغاء، أو استخدم استراتيجية أخرى للتجديد والقبول. لا يحق لتحسين الأداء إضعاف عقد التفويض بصمت. اختبر أقرب موعد ناتج وأبعده، وسلوك المصدر إذا ظلت مفاتيح كثيرة تفقد معاً.

أهم ما تعلمته

  • الانتهاء المنطقي والتنظيف والإخلاء والصلاحية مختلفة.
  • يجب أن تحفظ الكتابة والتجديد الدورة المعلنة.

المراجع الرسمية