Ehcache لجافا: الدليل الشامل للتخزين المؤقت
Ehcache هي مكتبة تخزين مؤقت قوية ومفتوحة المصدر تُستخدم على نطاق واسع في لغة جافا. توفر للمطورين واجهة برمجة تطبيقات (API) بسيطة وعالية الأداء لتخزين البيانات مؤقتاً، مما يُسرّع أداء التطبيقات بشكل كبير عن طريق تقليل وقت الوصول إلى مصادر البيانات البطيئة مثل قواعد البيانات، واجهات API الخارجية، أو أنظمة الملفات. تُعتبر Ehcache المعيار الفعلي للتخزين المؤقت في نظام جافا البيئي، وتُستخدم في مشاريع ضخمة مثل Hibernate (كمزوّد للذاكرة المؤقتة من المستوى الثاني)، وSpring Framework، وغيرها الكثير.
لماذا تحتاج مكتبة Ehcache؟ الهدف الأساسي هو تحسين أداء التطبيق. عندما يتم جلب البيانات من قاعدة بيانات أو خدمة خارجية، كل طلب يستغرق وقتاً لتنفيذ استدعاء شبكي، أو إدخال/إخراج من القرص، أو عمليات حسابية معقدة. تتيح لك Ehcache حفظ نتيجة الطلب الأول في الذاكرة (أو على القرص)، وعند طلب نفس البيانات مرة أخرى، يتم إرجاعها فوراً من الذاكرة المؤقتة. هذا يُقلل الحمل على قواعد البيانات، ويُقلص زمن الاستجابة، ويُحسّن تجربة المستخدم. بالإضافة إلى ذلك، توفر Ehcache آليات لإدارة دورة حياة الذاكرة المؤقتة: الحذف التلقائي للسجلات القديمة (TTL, TTI)، استراتيجيات إزالة البيانات عند امتلاء الذاكرة (LRU, LFU, FIFO)، ودعم التخزين المؤقت الموزع في البيئات العنقودية.
الميزات الرئيسية لـ Ehcache تشمل: التخزين المؤقت في الذاكرة وعلى القرص، دعم المعاملات، التكامل مع Jakarta EE، مراقبة JMX، الإعداد عبر XML أو برمجياً، بالإضافة إلى دعم التخزين المؤقت الموزع عبر Terracotta. المكتبة في تطور مستمر: بدءاً من الإصدار 3.x، تقدم Ehcache واجهة برمجة تطبيقات حديثة وآمنة من حيث الأنواع مع دعم Java Generics، مما يجعل الكود أكثر نظافة وموثوقية.
التثبيت
يتم توزيع Ehcache عبر Maven Central. لاستخدامها في مشروعك، أضف التبعية في ملف pom.xml (لـ Maven) أو build.gradle (لـ Gradle).
Maven
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.10.8</version> <!-- تحقق من أحدث إصدار على Maven Central -->
</dependency>
Gradle
implementation 'org.ehcache:ehcache:3.10.8'
إذا كنت تستخدم إصداراً أقدم Ehcache 2.x، فستكون التبعية كالتالي:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.9.2</version>
</dependency>
في هذه المقالة، سنستخدم Ehcache 3.x لأنه الإصدار الحديث والموصى به.
بداية سريعة: مثال عملي بسيط
لننشئ ذاكرة تخزين مؤقت بسيطة تخزن أزواج "مفتاح-قيمة" (String, String).
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
public class EhcacheQuickStart {
public static void main(String[] args) {
// 1. إنشاء مدير الذاكرة المؤقتة
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
String.class, // نوع المفتاح
String.class, // نوع القيمة
ResourcePoolsBuilder.heap(10)) // 10 سجلات في الذاكرة
)
.build();
// 2. تهيئة المدير
cacheManager.init();
// 3. الحصول على الذاكرة المؤقتة بالاسم
Cache<String, String> myCache = cacheManager.getCache("myCache", String.class, String.class);
// 4. إضافة بيانات إلى الذاكرة المؤقتة
myCache.put("key1", "Hello, Ehcache!");
myCache.put("key2", "التخزين المؤقت في جافا");
// 5. قراءة البيانات من الذاكرة المؤقتة
String value1 = myCache.get("key1");
System.out.println("القيمة للمفتاح key1: " + value1);
// 6. إغلاق المدير عند الانتهاء
cacheManager.close();
}
}
هذا المثال البسيط يوضح كيفية إنشاء واستخدام Ehcache في دقائق. يمكنك الآن توسيع هذا المثال ليشمل أنواع بيانات أكثر تعقيداً وإعدادات متقدمة.