ما هو Jedis ولماذا تحتاجه؟
Jedis هي مكتبة Java خفيفة الوزن وبسيطة وشائعة جدًا للتعامل مع Redis (Remote Dictionary Server). Redis هو مخزن بيانات عالي الأداء في الذاكرة، يُستخدم غالبًا كقاعدة بيانات وذاكرة تخزين مؤقت ووسيط للرسائل. يوفر Jedis واجهة برمجة تطبيقات (API) بسيطة وبديهية للتفاعل مع خادم Redis من تطبيقات Java.
لماذا تحتاج Jedis؟ إذا كان تطبيق Java الخاص بك يستخدم Redis للتخزين المؤقت، أو إدارة الجلسات، أو قوائم المهام، أو تخزين البيانات المؤقتة، فإن Jedis هو الطريقة الأكثر مباشرة وفعالية للاتصال بـ Redis. يدعم جميع هياكل البيانات الأساسية لـ Redis (سلاسل، قوائم، مجموعات، تجزئات، مجموعات مرتبة)، بالإضافة إلى ميزات مثل Pub/Sub والمعاملات ونصوص Lua.
يشتهر Jedis ببساطته وعدم وجود تبعيات غير ضرورية. على عكس العملاء الأكثر ثقلاً (مثل Lettuce)، لا يتطلب Jedis إعداد تجمع اتصالات افتراضيًا (على الرغم من أنه يدعمه)، مما يجعله خيارًا مثاليًا للمشاريع الصغيرة والمتوسطة حيث البساطة وسرعة التطوير أمران مهمان.
تثبيت Jedis
يتم توزيع Jedis عبر Maven Central. لإضافة المكتبة إلى مشروعك، تحتاج إلى إضافة التبعية في ملف pom.xml (لـ Maven) أو build.gradle (لـ Gradle).
التثبيت عبر Maven
أضف الكتلة التالية إلى ملف pom.xml الخاص بك:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.1.0</version> <!-- استخدم أحدث إصدار مستقر -->
</dependency>
التثبيت عبر Gradle
أضف السطر التالي إلى ملف build.gradle الخاص بك:
implementation 'redis.clients:jedis:5.1.0'
هام: الإصدار 5.x هو أحدث تحديث رئيسي لـ Jedis، والذي يتضمن دعم Redis 7.x وميزات جديدة. يُنصح دائمًا باستخدام أحدث إصدار مستقر للحصول على جميع التصحيحات والميزات الجديدة.
بداية سريعة مع مثال كود
لنكتب برنامجًا بسيطًا يتصل بـ Redis، ويحفظ قيمة، ويقرأها مرة أخرى.
لنفترض أن خادم Redis يعمل محليًا على المنفذ القياسي 6379.
import redis.clients.jedis.Jedis;
public class JedisQuickStart {
public static void main(String[] args) {
// 1. إنشاء اتصال بـ Redis
// بشكل افتراضي localhost:6379
try (Jedis jedis = new Jedis("localhost", 6379)) {
// 2. التحقق من الاتصال (PING)
String response = jedis.ping();
System.out.println("Ping response: " + response); // يجب أن تكون "PONG"
// 3. حفظ قيمة
jedis.set("user:1000:name", "أحمد");
jedis.set("user:1000:age", "30");
// 4. قراءة قيمة
String name = jedis.get("user:1000:name");
String age = jedis.get("user:1000:age");
System.out.println("اسم المستخدم: " + name);
System.out.println("عمر المستخدم: " + age);
// 5. التحقق من وجود مفتاح
boolean exists = jedis.exists("user:1000:name");
System.out.println("المفتاح موجود: " + exists);
// 6. حذف مفتاح
long deleted = jedis.del("user:1000:age");
System.out.println("عدد المفاتيح المحذوفة: " + deleted);
}
}
}
يوضح هذا المثال العمل الأساسي: الاتصال، الكتابة، القراءة، التحقق من الوجود، والحذف. لاحظ استخدام try-with-resources - وهذا يضمن إغلاق الاتصال بعد الاستخدام.
الطرق الأساسية في Jedis
يوفر Jedis مئات الطرق التي تغطي جميع إمكانيات Redis. فيما يلي 10 من أكثر الطرق استخدامًا مع شرح مفصل وأمثلة.