English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

معاملات Redis

يمكن تنفيذ 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

في الجدول أدناه، تم تقديم الأوامر المتعلقة بالمعاملات في Redis:

الترتيبالأمر والوصف
1DISCARD
إلغاء المعاملة، وإلغاء تنفيذ جميع الأوامر داخل معاملة.
2EXEC
تنفيذ جميع الأوامر داخل معاملة.
3MULTI
إشارة بداية معاملة.
4UNWATCH
إلغاء الأمر WATCH للمراقبة على جميع المفاتيح.
5WATCH مفتاح [مفتاح ...]
مراقبة مفتاح (أو أكثر من مفتاح) إذا تم تغيير هذا المفتاح (أو هذه المفاتيح) بواسطة أمر آخر قبل تنفيذ المعاملة، فإن المعاملة ستتم إلغاؤها.