0Pricing
Lua Academy · درس

بيئة EVAL وRedis Lua

نفّذ نصوص Lua باستخدام EVAL وافهم KEYS/ARGV والتخزين المؤقت للنصوص

بيئة EVAL وRedis Lua درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

لماذا Lua في Redis؟

يتيح Redis تشغيل سكريبتات Lua داخل الخادم باستخدام EVAL. تُنفَّذ السكريبتات ذريًا، فلا يُنفَّذ أي أمر Redis آخر بالتزامن، مما يتيح إجراء عمليات متعددة الخطوات بأمان.

أمر EVAL

EVAL script numkeys key [key ...] arg [arg ...] — يصل السكريبت إلى المفاتيح عبر جدول KEYS وإلى الوسائط عبر جدول ARGV (المفهرس بدءًا من 1).

-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykey

الوصول إلى KEYS وARGV

في Lua، يكون KEYS وARGV جدولين عامين يملؤهما EVAL.

EVAL "
local key = KEYS[1]
local val = ARGV[1]
redis.call('SET', key, val)
return redis.call('GET', key)
" 1 greeting hello

redis.call مقابل redis.pcall

ينفّذ redis.call(cmd, ...) أمر Redis ويرفع خطأ Lua عند الفشل. يعيد redis.pcall جدول أخطاء بدلًا من رفع خطأ.

local ok, err = pcall(function()
  redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) end

القيم المعادة

تُحوَّل أنواع Lua إلى أنواع ردود Redis: الأرقام ← أعداد صحيحة، والسلاسل النصية ← سلاسل نصية كبيرة، والجداول ← مصفوفات متعددة العناصر، وfalse/nil ← رد nil، وtrue ← العدد الصحيح 1.

تخزين السكريبتات مؤقتًا

يخزّن Redis السكريبتات المترجمة مؤقتًا باستخدام SHA1. يعمل استدعاء EVAL الأول على الترجمة والتخزين المؤقت. أما الاستدعاءات اللاحقة باستخدام SHA نفسه (عبر EVALSHA) فتتجاوز الترجمة.

الوصول إلى أنواع بيانات Redis

تتوفر جميع أوامر Redis القياسية عبر redis.call: GET وSET وHGET وLPUSH وEXPIRE وغير ذلك.

local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return count

ضمان الذرّية

أثناء تشغيل سكريبت Lua، يحظر Redis جميع العملاء الآخرين. يجب أن تكون السكريبتات سريعة، بحيث يستغرق تشغيلها من ميكروثوانٍ إلى ميليثوانٍ. أما السكريبتات طويلة التنفيذ فتحظر الخادم بأكمله.

إصدار Lua في Redis

يضمّن Redis الإصدار Lua 5.1 (أو إصدارًا متوافقًا مع 5.1). قد تختلف بعض الميزات مثل goto وbit32. استخدم مكتبتي cjson وcmsgpack اللتين يوفرهما Redis للتعامل مع JSON وMessagePack.

أفضل ممارسات معالجة الأخطاء

استخدم redis.pcall للعمليات التي قد تفشل، مثل أخطاء النوع. أعد جداول أخطاء منظّمة ليتمكن العميل من تفسيرها.

تصحيح أخطاء سكريبتات Redis

استخدم redis.log(redis.LOG_DEBUG, "message") لكتابة رسائل تصحيح الأخطاء في سجل Redis. اختبر السكريبتات في redis-cli باستخدام EVAL قبل SCRIPT LOAD.

سؤال حول Redis Lua

ما الفائدة الرئيسية من تشغيل سكريبتات Lua في Redis باستخدام EVAL؟

مراجعة: بيئة EVAL وRedis Lua

يشغّل EVAL سكريبتات Lua ذريًا في Redis. يمكنك الوصول إلى المفاتيح عبر KEYS[n] وإلى الوسائط عبر ARGV[n]. استخدم redis.call لتنفيذ الأوامر. تُخزَّن السكريبتات مؤقتًا باستخدام SHA1. احرص على سرعة السكريبتات لتجنب حظر الخادم.

الأسئلة الشائعة

هل درس «بيئة EVAL وRedis Lua» مجاني؟

نعم — نص درس «بيئة EVAL وRedis Lua» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «بيئة EVAL وRedis Lua»؟

نفّذ نصوص Lua باستخدام EVAL وافهم KEYS/ARGV والتخزين المؤقت للنصوص تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «بيئة EVAL وRedis Lua»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بيئة EVAL وRedis Lua
  2. العمليات الذرية والمعاملات
  3. تحديد معدل الطلبات باستخدام Lua
  4. ‏SCRIPT LOAD وEVALSHA
← العودة إلى Lua Academy