اختبار أداء 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، حسب البيئة الشبكية وحجم البيانات.

📖 ملخص

📝 تمارين

  1. اختبار أساسي: استخدم redis-benchmark لاختبار عمليات SET و GET
  2. اختبار خط الأنابيب: قارن الأداء مع وبدون خط الأنابيب
  3. اختبار التحسين: جرب معاملات إعدادات مختلفة ولاحظ تغيرات الأداء

الدرس التالي

في الدرس التالي، سنتعلم خط أنابيب Redis، وفهم مبادئ واستخدام خط الأنابيب.

100%