مقدمة
Redis هو مخزن بيانات عالي الأداء في الذاكرة، يُستخدم كذاكرة تخزين مؤقت (Cache)، وسيط رسائل (Message Broker)، قاعدة بيانات، أو قائمة انتظار. يدعم Redis هياكل بيانات متنوعة: السلاسل النصية، القوائم، المجموعات، التجزئات، وغيرها. بالنسبة للغة بايثون، يوجد عميل رسمي يُدعى redis-py، والذي يوفر واجهة سهلة الاستخدام للتعامل مع وظائف Redis.
redis-py هو العميل الأكثر شيوعًا وموثوقية للعمل مع Redis في تطبيقات بايثون. المكتبة قيد التطوير النشط وتدعمها المجتمع، وتوفر واجهة برمجة تطبيقات (API) بسيطة وبديهية للتفاعل مع خادم Redis.
ما هي مكتبة redis-py
redis-py هي مكتبة بايثون الرسمية للعمل مع Redis، وتوفر دعمًا كاملاً لجميع إمكانيات Redis. المكتبة مكتوبة بلغة بايثون الخالصة وتوفر واجهة متزامنة (Synchronous) وغير متزامنة (Asynchronous) للعمل مع Redis.
الميزات الرئيسية لـ redis-py
توفر المكتبة مجموعة كاملة من الوظائف للعمل مع Redis:
- دعم جميع أنواع بيانات Redis
- العمل مع المعاملات (Transactions) وخطوط الأنابيب (Pipelines)
- وظيفة النشر/الاشتراك (Pub/Sub)
- دعم Redis Sentinel والمجموعات (Clusters)
- العمل غير المتزامن عبر redis.asyncio
- تجمع الاتصالات (Connection Pool) لتحسين الأداء
- إعادة الاتصال التلقائي عند انقطاع الاتصال
التثبيت والاتصال
تثبيت المكتبة
pip install redis
للتثبيت مع تبعيات إضافية:
pip install redis[hiredis] # لتحسين الأداء
الاتصال بـ Redis
اتصال أساسي بـ Redis (على المنفذ الافتراضي 6379):
import redis
# الاتصال بـ Redis المحلي
client = redis.Redis(host='localhost', port=6379, db=0)
# الاتصال بكلمة مرور
client = redis.Redis(host='localhost', port=6379, password='yourpassword', db=0)
# الاتصال عبر URL
client = redis.from_url('redis://localhost:6379/0')
التحقق من الاتصال
try:
response = client.ping()
print(f"تم الاتصال بنجاح: {response}") # True
except redis.ConnectionError:
print("خطأ في الاتصال بـ Redis")
أساسيات Redis وأنواع البيانات الرئيسية
يدعم Redis خمسة أنواع بيانات أساسية، لكل منها خصائصه وطرق عمله:
السلاسل النصية (Strings)
أبسط نوع بيانات في Redis. يمكنه تخزين النصوص والأرقام والبيانات الثنائية.
القوائم (Lists)
مجموعات مرتبة من السلاسل النصية. تدعم إضافة العناصر في البداية والنهاية.
المجموعات (Sets)
مجموعات غير مرتبة من السلاسل النصية الفريدة. تدعم عمليات التقاطع والاتحاد.
التجزئات (Hashes)
خرائط بين الحقول النصية والقيم. مثالية لتمثيل الكائنات.
المجموعات المرتبة (Sorted Sets)
مجموعات مع درجة (Score) لكل عنصر. العناصر مرتبة حسب الدرجة.
الأوامر الأساسية لـ Redis عبر redis-py
العمل مع السلاسل النصية
# تعيين قيمة وجلبها
client.set("user:name", "أحمد")
name = client.get("user:name").decode('utf-8')
# تعيين مع وقت انتهاء الصلاحية (TTL)
client.setex("session:123", 3600, "active") # لمدة ساعة
# العمل مع الأرقام
client.set("counter", 0)
client.incr("counter") # زيادة بمقدار 1
client.incrby("counter", 5) # زيادة بمقدار 5
client.decr("counter") # إنقاص بمقدار 1
العمل مع القوائم
# إضافة عناصر
client.lpush("tasks", "task1", "task2") # في البداية
client.rpush("tasks", "task3", "task4") # في النهاية
# جلب العناصر
tasks = client.lrange("tasks", 0, -1) # جميع العناصر
first_task = client.lpop("tasks") # حذف وإرجاع الأول
last_task = client.rpop("tasks") # حذف وإرجاع الأخير