English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يمكن تنفيذ Redis المعاملات مرة واحدة، ويأتي مع ثلاثة ضمانات مهمة:
توضع العمليات الجماعية في مخزن الصف قبل إرسال أمر EXEC.
بعد استلام أمر EXEC يدخل في عملية تنفيذ المعاملة، وإذا فشل أي أمر في المعاملة، فإن الأوامر الأخرى تُنفذ.
في عملية تنفيذ المعاملة، لن يتم إدراج طلبات الأوامر المقدمة من العملاء الآخرين في سلسلة أوامر تنفيذ المعاملة.
يمر معاملة من البداية إلى التنفيذ بمراحل ثلاثة:
بدء المعاملة.
إدخال الأوامر في الصف.
تنفيذ المعاملة.
هذا مثال على معاملة، حيث يتم MULTI تبدأ المعاملة، ثم يتم إدخال العديد من الأوامر إلى معاملة، وأخيرًا يتم EXEC تُشغل الأوامر معاملات، وتُنفذ جميع الأوامر في المعاملة دفعة واحدة:
redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days" QUEUED redis 127.0.0.1:6379> GET book-name QUEUED redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series" QUEUED redis 127.0.0.1:6379> SMEMBERS tag QUEUED redis 127.0.0.1:6379> EXEC 1) OK 2) "Mastering C++ in 21 days" 3) (integer) 3 4) 1) "Mastering Series" 2) "C++" 3) "برمجة"
تنفيذ أمر Redis فردي هو غير قابل للتجزئة، ولكن Redis لم يضيف أي آلية للحفاظ على الاتحاد في المعاملات، لذا فإن تنفيذ معاملات Redis ليس غير قابل للتجزئة.
يمكن فهم المعاملات كحزمة من سكريبتات التشغيل الجماعي، ولكن الأوامر الجماعية ليست عمليات غير قابلة للتجزئة، وإفشال أي أمر في منتصفها لن يؤدي إلى إلغاء الأوامر التي تم تنفيذها مسبقًا، ولن يؤدي أيضًا إلى عدم تنفيذ الأوامر اللاحقة.
هذه هي الشرح الموجود على الموقع الرسمي من وثائق Redis معاملات:
من المهم ملاحظة أن حتى عندما تفشل أمر، يتم معالجة جميع الأوامر الأخرى في الصف – Redis لن تتوقف عن معالجة الأوامر.
مثلاً:
redis 127.0.0.1:7000> multi OK redis 127.0.0.1:7000> set a aaa QUEUED redis 127.0.0.1:7000> set b bbb QUEUED redis 127.0.0.1:7000> set c ccc QUEUED redis 127.0.0.1:7000> exec 1) OK 2) OK 3) OK
إذا فشل الأمر set b bbb، فإن set a تم تنفيذه بنجاح ولن يتم إلغاؤه، وستستمر تنفيذ set c.
في الجدول أدناه، تم تقديم الأوامر المتعلقة بالمعاملات في Redis:
الترتيب | الأمر والوصف |
---|---|
1 | DISCARD إلغاء المعاملة، وإلغاء تنفيذ جميع الأوامر داخل معاملة. |
2 | EXEC تنفيذ جميع الأوامر داخل معاملة. |
3 | MULTI إشارة بداية معاملة. |
4 | UNWATCH إلغاء الأمر WATCH للمراقبة على جميع المفاتيح. |
5 | WATCH مفتاح [مفتاح ...] مراقبة مفتاح (أو أكثر من مفتاح) إذا تم تغيير هذا المفتاح (أو هذه المفاتيح) بواسطة أمر آخر قبل تنفيذ المعاملة، فإن المعاملة ستتم إلغاؤها. |