التخزين المؤقت في C++: مكتبة Cache++

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Cache++ ولماذا هو مطلوب؟

Cache++ هي مكتبة خفيفة الوزن وعالية الأداء لتخزين البيانات مؤقتًا في C++، توفر واجهة سهلة الاستخدام للتخزين المؤقت لنتائج العمليات الحسابية المستخدمة بشكل متكرر، أو استعلامات قواعد البيانات، أو استجابات الشبكة. تنفذ المكتبة عدة استراتيجيات للإزالة (LRU, LFU, TTL) وتدعم أمان التعامل مع الخيوط، مما يجعلها خيارًا مثاليًا لتطبيقات الخوادم، ومحركات الألعاب، وأنظمة الوقت الفعلي.

الوظائف الأساسية

  • ذاكرة تخزين مؤقت LRU (الأقل استخدامًا مؤخرًا) — تقوم تلقائيًا بإزالة العناصر الأقل استخدامًا عند تجاوز الحد.
  • ذاكرة تخزين مؤقت LFU (الأقل استخدامًا من حيث التكرار) — تزيل العناصر ذات أقل تكرار للوصول.
  • ذاكرة تخزين مؤقت TTL (وقت البقاء) — تنتهي صلاحية العناصر بعد وقت محدد.
  • أمان التعامل مع الخيوط — يمكن تنفيذ جميع العمليات من عدة خيوط دون الحاجة إلى مزامنة إضافية.
  • سياسات إزالة قابلة للتخصيص — تكوين مرن ليناسب المهام المحددة.

التثبيت

يتم توزيع Cache++ كمكتبة تعتمد على ملفات الرأس فقط (header-only)، لذا يكفي نسخ الملفات إلى المشروع للتثبيت. إذا كنت تستخدم CMake، أضف إلى CMakeLists.txt:

add_subdirectory(path/to/cachepp)target_link_libraries(your_project cachepp)

أو ببساطة قم بتضمين ملف الرأس:

#include "cachepp/cache.hpp"

مثال على الكود

#include <iostream>#include "cachepp/cache.hpp"

int main() { // إنشاء ذاكرة تخزين مؤقت LRU تتسع لـ 100 عنصر cachepp::lru_cache<std::string, int> cache(100);

// إضافة عناصر cache.put("key1", 42); cache.put("key2", 100);

// الحصول على قيمة if (auto val = cache.get("key1")) { std::cout << "Found: " << *val << std::endl; }

// التحقق من الوجود if (cache.contains("key2")) { std::cout << "key2 exists" << std::endl; }

// حذف عنصر cache.erase("key1");

return 0;}

متى تستخدم Cache++

المكتبة مناسبة لـ:

  • تسريع الاستعلامات المتكررة لواجهات برمجة التطبيقات الخارجية (APIs).
  • التخزين المؤقت لنتائج العمليات الحسابية الثقيلة (مثل معالجة الصور).
  • تنفيذ ذاكرة تخزين مؤقت لخادم الويب (مثل استجابات طلبات HTTP).
  • تحسين التعامل مع قواعد البيانات (ذاكرة تخزين مؤقت للاستعلامات).

لا يُنصح باستخدامها:

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

الخلاصة

Cache++ هي أداة قوية لتحسين أداء تطبيقات C++. بفضل دعمها لاستراتيجيات الإزالة المختلفة وأمان التعامل مع الخيوط، يمكن دمجها بسهولة في المشاريع القائمة. ابدأ في استخدام التخزين المؤقت اليوم لتقليل وقت استجابة تطبيقك بملايين المرات.

توصيات