اختبار أداء Redis
اختبار الأداء هو طريقة مهمة لتقييم أداء Redis. يغطي هذا الدرس استخدام redis-benchmark للاختبار.
مقدمة إلى redis-benchmark
redis-benchmark هي أداة اختبار أداء مدمجة في Redis يمكنها اختبار عمليات Redis المختلفة.
الاستخدام الأساسي
BASH
# اختبار أساسي (افتراضي 100000 طلب، 50 عميل متزامن)
redis-benchmark
# تحديد المضيف والمنفذ
redis-benchmark -h 127.0.0.1 -p 6379
# تحديد عدد الطلبات والتزامن
redis-benchmark -n 100000 -c 100
المعاملات الشائعة
| المعامل | الوصف | الافتراضي |
|---|---|---|
-h |
عنوان المضيف | 127.0.0.1 |
-p |
المنفذ | 6379 |
-n |
عدد الطلبات | 100000 |
-c |
عدد العملاء المتوازيين | 50 |
-d |
حجم البيانات (بايت) | 3 |
-k |
استخدام keepalive | 1 |
-q |
إخراج هادئ | false |
-t |
الأوامر المراد اختبارها | all |
-P |
حجم خط الأنابيب | 1 |
تفسير نتائج الاختبار
نموذج الإخراج
TEXT
====== SET ======
100000 requests completed in 1.23 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.00% <= 1 milliseconds
99.80% <= 2 milliseconds
100.00% <= 3 milliseconds
81300.81 requests per second
====== GET ======
100000 requests completed in 1.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.00% <= 1 milliseconds
99.90% <= 2 milliseconds
100.00% <= 3 milliseconds
86956.52 requests per second
المقاييس الرئيسية
| المقياس | الوصف |
|---|---|
| requests per second | QPS (استعلامات في الثانية) |
| 99.00% <= 1 milliseconds | 99% من الطلبات اكتملت خلال 1 مللي ثانية |
| parallel clients | عدد العملاء المتزامنين |
| payload | حجم البيانات |
سيناريوهات الاختبار الشائعة
1. اختبار عمليات SET
BASH
# اختبار عملية SET
redis-benchmark -t set -n 100000 -c 50
# اختبار SET مع خط الأنابيب
redis-benchmark -t set -n 100000 -c 50 -P 10
2. اختبار عمليات GET
BASH
# اختبار عملية GET
redis-benchmark -t get -n 100000 -c 50
3. اختبار أوامر محددة
BASH
# اختبار أوامر محددة
redis-benchmark -t set,get,incr,lpush,rpush,lpop,rpop,sadd,hset -n 100000 -c 50
4. اختبار خط الأنابيب
BASH
# استخدام خط الأنابيب (إرسال أوامر دفعات)
redis-benchmark -t set -n 100000 -c 50 -P 10
# مقارنة الأداء مع وبدون خط الأنابيب
redis-benchmark -t set -n 100000 -c 50 -P 1
redis-benchmark -t set -n 100000 -c 50 -P 10
redis-benchmark -t set -n 100000 -c 50 -P 100
5. اختبار البيانات الكبيرة
BASH
# اختبار بحجم بيانات كبير
redis-benchmark -t set -n 100000 -c 50 -d 1024
# اختبار بأحجام بيانات مختلفة
redis-benchmark -t set -n 100000 -c 50 -d 64
redis-benchmark -t set -n 100000 -c 50 -d 256
redis-benchmark -t set -n 100000 -c 50 -d 1024
نصائح تحسين الأداء
1. استخدام خط الأنابيب
يمكن لخط الأنابيب تحسين الأداء بشكل كبير عن طريق تقليل جولات الشبكة:
BASH
# بدون خط أنابيب
redis-benchmark -t set -n 100000 -c 50 -P 1
# النتيجة: ~80000 QPS
# مع خط أنابيب
redis-benchmark -t set -n 100000 -c 50 -P 10
# النتيجة: ~200000 QPS
2. استخدام أوامر دفعات
الأوامر الدفعية أكثر كفاءة من الأوامر الفردية:
BASH
# أوامر فردية
redis-benchmark -t set -n 100000 -c 50
# النتيجة: ~80000 QPS
# أوامر دفعات (MSET)
redis-benchmark -t mset -n 100000 -c 50
# النتيجة: ~150000 QPS
3. ضبط الإعدادات
BASH
# ضبط الحد الأقصى للذاكرة
redis-cli CONFIG SET maxmemory 256mb
# ضبط الحد الأقصى لاتصالات العملاء
redis-cli CONFIG SET maxclients 10000
# تعطيل الاستمرارية (للاختبار)
redis-cli CONFIG SET save ""
redis-cli CONFIG SET appendonly no
مرجع أداء أساسي
أداء مثيل واحد
| العملية | QPS (بدون خط أنابيب) | QPS (خط أنابيب P=10) |
|---|---|---|
| SET | 80,000 | 200,000 |
| GET | 90,000 | 250,000 |
| INCR | 85,000 | 220,000 |
| LPUSH | 80,000 | 200,000 |
| LRANGE (100) | 30,000 | 80,000 |
💡 ملاحظة: الأداء الفعلي يعتمد على الأجهزة والبيئة الشبكية وحجم البيانات وعوامل أخرى.
برامج اختبار مخصصة
استخدام برامج Lua النصية
BASH
# إنشاء برنامج اختبار
cat > test.lua << 'EOF'
for i = 1, 100000 do
redis.call('SET', 'key:' .. i, 'value:' .. i)
end
EOF
# تنفيذ الاختبار
redis-cli --eval test.lua
استخدام Python
PYTHON
import redis
import time
r = redis.Redis(host='localhost', port=6379)
# اختبار عملية SET
start = time.time()
for i in range(100000):
r.set(f'key:{i}', f'value:{i}')
end = time.time()
print(f'SET: {100000 / (end - start):.0f} QPS')
❓ أسئلة شائعة
س هل تختلف نتائج redis-benchmark عن الإنتاج؟
ج نعم. redis-benchmark يعمل في بيئة مثالية. أداء الإنتاج الفعلي يتأثر بالشبكة والتزامن وحجم البيانات إلخ。
س كيف أختبر أداء مجموعة Redis؟
ج استخدم redis-benchmark مع معاملات عقدة محددة، أو استخدم أدوات اختبار مجموعة مخصصة。
س ما حجم خط الأنابيب الموصى به؟
ج عادة 10-100، حسب البيئة الشبكية وحجم البيانات.
📖 ملخص
- redis-benchmark هي أداة اختبار أداء مدمجة في Redis
- المقاييس الرئيسية: QPS، نسب زمن الاستجابة
- خط الأنابيب يمكن أن يحسن الأداء بشكل كبير
- الأوامر الدفعية أكثر كفاءة من الفردية
- الأداء الفعلي يعتمد على الأجهزة والشبكة وحجم البيانات إلخ.
📝 تمارين
- اختبار أساسي: استخدم redis-benchmark لاختبار عمليات SET و GET
- اختبار خط الأنابيب: قارن الأداء مع وبدون خط الأنابيب
- اختبار التحسين: جرب معاملات إعدادات مختلفة ولاحظ تغيرات الأداء
الدرس التالي
في الدرس التالي، سنتعلم خط أنابيب Redis، وفهم مبادئ واستخدام خط الأنابيب.



