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

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

الخرائط ونماذج الكائن وملكية المفتاح

مثل الكائن المحدود بخريطة Redis مع الهوية وتسلسل الحقل ودورته، وميز تحديث الحقل عن تحقق قاعدة الوثائق.

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

أهداف الدرس

  • اختيار حدود الخريطة وتفسير عمليات الحقول.
  • تحديد غياب الحقل والتحديث الجزئي وملكية الانتهاء.

تجمع الخريطة حقول بايتات مسماة بمفتاح

تخزن الخريطة أزواجاً وتناسب ملخص جلسة أو ملف مخبأ محدود. ليست JSON متداخلة بتحقق ومفاتيح خارجية تلقائية. يختار التطبيق الأسماء والترميز والإلزام. يسهل المفتاح الواحد التحديث المرتبط وقد يكلف تاريخ حقول غير محدود ويتنافس. ميز المرجع والمخبأ وحدد لقطة متماسكة أم حقولاً مستقلة.

حدث كائناً محدوداً بصراحة

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

redis عمليات خريطة محدودة توضيحية
HSET lab:profile:7 name Lina state active
HGET lab:profile:7 name
HMGET lab:profile:7 state missingField
الناتج المتوقع
2
Lina
[active, missing]

المتوقع حقلان جديدان وLina ثم [active, missing]، وقد يختلف تمثيل الغياب بالعميل.

لا يزيل التحديث الجزئي الحقول القديمة

تغير HSET المسميات وتحفظ غيرها وتحذف HDEL المحدد. قد تبقى حقول قديمة عند إصدار جديد دون ترحيل. ميز الغياب والفراغ والفساد، وقد تكلف HGETALL خريطة كبيرة فاختر المطلوب. لا يثبت عدد الجديد تغير كل قيمة مرسلة.

تحقق من شكل التطبيق دون اتصال

يفحص النموذج حقولاً وإصداراً في قاموس محلي لا تحقق Redis. يرسل الكاتب حقولاً متسقة ويقرر القارئ مصير القديم والناقص. قد تلائم العودة للمرجع بدلاً من عرض مجهول مع تقييد حمل العودة. حدد إبطال القديم أو تحويله قبل قارئ يلزم الجديد.

python فحص توافق كائن مخبأ محلياً
def usable_profile(fields):
    return fields.get('schema') == '1' and {'name', 'state'} <= fields.keys()

assert usable_profile({'schema': '1', 'name': 'Lina', 'state': 'active'})
assert not usable_profile({'schema': '2', 'name': 'Lina', 'state': 'active'})
assert not usable_profile({'schema': '1', 'name': 'Lina'})

تقبل الفحوص الإصدار1 الكامل وترفض المجهول والناقص دون ادعاء فرض مخطط في الخادم.

اختر انتهاء المفتاح والحقل بوعي

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

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

تبقى حقول قديمة بعد تغيير المخطط

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

يعامل الحقل الغائب كقيمة فارغة صحيحة

لماذا يحدث؟
أضاع فك العميل فرق الوجود.
كيف تصلحه؟
احفظ الغياب وعالج الناقص صراحة.
كيف تتجنب تكراره؟
اختبر الغائب والفارغ والفاسد.

تنتهي الخريطة كلها خلاف المتوقع

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

اختبر فهمك

1. يضيف الملف schema=2 ويبقي حقل امتياز قديماً. لماذا لا تكفي HSET؟

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

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

2. هل تحتوي الخريطة كل حدث تدقيق بحقل جديد؟

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

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

أهم ما تعلمته

  • شكل الخريطة ومخططها مسؤولية التطبيق.
  • يحتاج الجزئي والغياب والانتهاء اختبارات مستقلة.

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