Redis سهل الاختصار إلى "ذاكرة مؤقتة سريعة لمفتاح-قيمة".
لكن هذا يغفل الجزء الذي يجعله ذا قيمة: يتيح Redis هياكل بيانات متخصصة ذات تسويات أداء وذاكرة محددة جداً.
HyperLogLog هو أفضل مثال
إذا كنت بحاجة إلى عد تقريبي للقيم الفريدة، قد تكون المجموعة مبالغة.
تمنحك مجموعة Redis خصوصية دقيقة، ولكن تكلفة الذاكرة تنمو مع عدد الأعضاء.
HyperLogLog يوازن بين الدقة واستخدام ذاكرة ثابتة صغيرة:
PFADD stream:123:views 203.0.113.10
PFADD stream:123:views 203.0.113.11
PFCOUNT stream:123:views
هذا يجعله مناسبًا لـ:
- الزوار الفريدون التقريبيون
- الأحداث الفريدة التقريبية
- قياس الاتجاه حيث يكون الخطأ الصغير مقبولًا
إنه غير مناسب عندما تكون العدات الدقيقة مطلوبة للفوترة، أو الامتثال، أو نقل الأموال.
لهذا السبب، فإن إثبات مفهوم صغير مهم قبل الاعتماد. غذِّ HyperLogLog بحركة مرور واقعية وقارن النتيجة التقريبية مع مجموعة دقيقة على مجموعة بيانات عينة. غالبًا ما يكون الفوز في الذاكرة ممتازًا، ولكن يجب التحقق من معدل الخطأ المقبول مقابل حالة الاستخدام الفعلية للمنتج، وليس افتراضه من منشور مدونة.
هذه هي الأنماط مع هياكل بيانات Redis بشكل عام: كل واحدة ترمز إلى تسوية مفيدة.
فكر في أشكال المشكلات
يصبح Redis أكثر قوة عندما تسأل:
- هل أحتاج إلى الدقة أم التقريب؟
- هل أحتاج إلى ترتيب؟
- هل أحتاج إلى تميز؟
- هل أحتاج إلى سلوك نافذة زمنية؟
هذا يقود بشكل طبيعي إلى المجموعات المرتبة، والخرائط البتية، وHyperLogLog، والتدفقات، وبقية صندوق الأدوات.
قراءة إضافية