معاملات

  • 2021-11-26

معاملات ردیس اجازه می دهد اجرای یک گروه از دستورات در یک مرحله, که در اطراف دستورات چند محور , اجرا , دور انداختن و تماشای . معاملات ردیس دو تضمین مهم:

تمام دستورات در یک معامله سریال و اجرا پی در پی. یک درخواست ارسال شده توسط مشتری دیگر هرگز در وسط اجرای یک معامله ردیس خدمت کرده است. این تضمین می کند که دستورات به عنوان یک عملیات منفرد اجرا می شوند.

اجرایی دستور باعث اجرای تمام دستورات در معامله, بنابراین اگر یک مشتری از دست می دهد اتصال به سرور در زمینه یک معامله قبل از فراخوانی فرمان اجرایی هیچ یک از عملیات انجام می شود, به جای اگر دستور اجرا نامیده می شود, تمام عملیات انجام می شود. هنگام استفاده از فایل فقط ضمیمه ردیس اطمینان حاصل می کند که برای نوشتن تراکنش روی دیسک از یک برنامه نویسی(2) استفاده کنید. با این حال اگر سرور ردیس سقوط و یا توسط مدیر سیستم در برخی از راه سخت کشته ممکن است که تنها تعدادی از عملیات ثبت نام. ردیس این وضعیت در راه اندازی مجدد تشخیص, و با یک خطا خارج خواهد شد. با استفاده از ابزار ردیس چک از ممکن است برای رفع ضمیمه تنها فایل است که معامله بخشی حذف به طوری که سرور می تواند دوباره شروع می شود.

شروع با نسخه 2.2, ردیس اجازه می دهد تا برای تضمین اضافی به دو بالا, در قالب قفل خوش بینانه در راه بسیار شبیه به یک چک و مجموعه ای (بازی های شبیه به) عملیات. این بعدا در این صفحه مستند شده است.

کاربرد

معامله ردیس با استفاده از دستور چند وارد شده است. دستور همیشه با خوب پاسخ می دهد . در این مرحله کاربر می تواند چندین دستور صادر کند. به جای اجرای این دستورات, ردیس صف خواهد شد. همه دستورات اجرا یک بار اجرا نامیده می شود.

فراخوانی دور جای خواهد صف معامله خیط و پیت کردن و معامله خروج.

مثال زیر افزایش کلید تولی و نوار اتمی.

همانطور که از جلسه بالا روشن است, اجرا می گرداند مجموعه ای از پاسخ, جایی که هر عنصر پاسخ یک دستور واحد در معامله است, در همان جهت دستورات صادر شد.

هنگامی که یک اتصال ردیس در زمینه یک درخواست چند است, تمام دستورات با رشته پاسخ خواهد صف (ارسال به عنوان یک پاسخ وضعیت از نقطه نظر پروتکل ردیس). دستور صف است که به سادگی برای اعدام برنامه ریزی شده هنگامی که اعدام نامیده می شود.

خطاهای داخل تراکنش

در طول یک معامله می توان با دو نوع خطای فرمان روبرو شد:

  • یک دستور ممکن است موفق به صف شود, بنابراین ممکن است یک خطا وجود دارد قبل از اجرای نامیده می شود. به عنوان مثال دستور ممکن است نحوی اشتباه (تعداد اشتباه از استدلال, نام فرمان اشتباه, . یا ممکن است شرایط بحرانی مانند شرایط خارج از حافظه وجود داشته باشد (اگر سرور با استفاده از دستورالعمل حداکثر حافظه پیکربندی شده باشد).
  • یک دستور ممکن است پس از اجرای نامیده می شود شکست, برای مثال از ما یک عملیات در برابر یک کلید با مقدار اشتباه انجام (مانند فراخوانی یک عملیات لیست در برابر یک مقدار رشته).

شروع با ردیس 2.6.5, سرور یک خطا در طول تجمع دستورات تشخیص. سپس از انجام معامله بازگرداندن خطا در حین اجرا خودداری می کند و معامله را کنار می گذارد.

خطاهای اتفاق می افتد پس از اجرا به جای در یک روش خاص به کار گرفته نمی: تمام دستورات دیگر اجرا خواهد شد حتی اگر برخی از دستورات در طول معامله با شکست مواجه.

این در سطح پروتکل واضح تر است. در مثال زیر یک دستور هنگام اجرا شکست می خورد حتی اگر نحو درست باشد:

اجرا بازگشت دو عنصر رشته فله پاسخ جایی که یکی یک کد خوب و از سوی دیگر پاسخ گمراه است. این به کتابخانه مشتری بستگی دارد که راهی معقول برای ایجاد خطا در کاربر پیدا کند.

این مهم است که توجه داشته باشید که حتی زمانی که یک دستور با شکست مواجه, تمام دستورات دیگر در صف پردازش – ردیس پردازش دستورات را متوقف کند.

مثال دیگر, دوباره با استفاده از پروتکل سیم با شبکه راه دور, نشان می دهد که چگونه خطاهای نحوی در اسرع وقت به جای گزارش:

این بار به دلیل خطای نحوی دستور اشتباه اشتباه به هیچ وجه در صف نیست.

چه در مورد بازگشت?

ردیس می کند عقبگرد معاملات را پشتیبانی نمی کند از حمایت از عقبگرد تاثیر قابل توجهی در سادگی و عملکرد ردیس دارند.

دور انداختن صف فرمان

را دور انداخته می تواند مورد استفاده قرار گیرد به منظور سقط یک معامله. در این حالت هیچ دستوری اجرا نمی شود و وضعیت اتصال به حالت عادی باز می گردد.

قفل خوش بینانه با استفاده از چک و تنظیم

سازمان دیده بان استفاده می شود برای یک رفتار چک و تنظیم (کاس) به معاملات ردیس.

کلیدهای اد سازمان دیده بان به منظور تشخیص تغییرات در برابر نظارت می شوند. اگر حداقل یک کلید تماشا شده قبل از دستور اجرا اصلاح شود, کل معامله متوقف می شود, و اجرا یک پاسخ پوچ را برمی گرداند تا اطلاع دهد که معامله شکست خورده است.

به عنوان مثال تصور کنید که ما نیاز داریم مقدار یک کلید را به صورت اتمی 1 افزایش دهیم (فرض کنید ردیس افزایش نداشته باشد ).

اولین تلاش ممکن است موارد زیر باشد:

این کار قابل اعتماد تنها اگر ما یک مشتری واحد انجام عملیات در یک زمان معین. اگر مشتریان متعدد سعی کنید به افزایش کلید در حدود همان زمان وجود خواهد داشت شرایط مسابقه. برای مثال, مشتری یک و ب خواهد ارزش قدیمی به عنوان مثال به عنوان خوانده شده, 10. این مقدار توسط هر دو مشتری به 11 افزایش می یابد و در نهایت به عنوان مقدار کلید تعیین می شود. بنابراین مقدار نهایی به جای 12 11 خواهد بود

با تشکر از تماشای ما می توانیم مشکل را به خوبی مدل کنیم:

با استفاده از کد بالا, اگر شرایط مسابقه وجود دارد و یکی دیگر از مشتری تغییر در نتیجه وال در زمان بین پاسخ ما به تماشای و پاسخ ما به اجرای , معامله شکست مواجه خواهد شد.

ما فقط باید عملیات را تکرار کنیم به این امید که این بار مسابقه جدیدی دریافت نکنیم. به این شکل از قفل کردن قفل خوش بینانه گفته می شود . در بسیاری از موارد استفاده, مشتریان متعدد خواهد شد دسترسی به کلید های مختلف, بنابراین برخورد بعید است-معمولا بدون نیاز به تکرار عملیات وجود دارد.

سازمان دیده بان توضیح داده شده

پس چه سازمان دیده بان واقعا در مورد? این یک دستور است که اعدام را مشروط می کند: ما از ردیس می خواهیم معامله را فقط در صورتی انجام دهد که هیچ یک از کلیدهای ساعت مچی اصلاح نشده باشد. این شامل تغییراتی است که توسط مشتری مانند دستورات نوشتن و خود ردیس مانند انقضا یا اخراج انجام می شود. اگر کلید بین زمانی که اد تماشا شد و زمانی که اعدام دریافت شد اصلاح شد, کل معامله خواهد شد به جای سقط.

یادداشت

  • در نسخه ردیس قبل از 6.0.9, یک کلید منقضی شده یک معامله باعث نمی شود به سقط شود. بیشتر در این مورد
  • دستورات موجود در یک تراکنش باعث ایجاد وضعیت ساعت نمی شوند زیرا فقط تا زمان ارسال اعدام در صف قرار می گیرند.

ساعت را می توان چندین بار نامید. به سادگی تمام تماس های ساعت جلوه هایی را برای تماشای تغییرات از تماس تا لحظه فراخوانی اعدام خواهند داشت. همچنین می توانید هر تعداد کلید را برای یک تماس ساعت ارسال کنید.

هنگامی که اجرا نامیده می شود, تمام کلید ها اد باز کردن ساعت, صرف نظر از اینکه معامله سقط شد یا نه. همچنین هنگامی که یک اتصال مشتری بسته است, همه چیز می شود اد ناظر.

همچنین می توان از دستور بازبینی (بدون استدلال) برای شستشوی تمام کلیدهای تماشا شده استفاده کرد. گاهی اوقات این مفید است که ما خوش بینانه قفل چند کلید, از احتمالا ما نیاز به انجام یک معامله برای تغییر کسانی که کلید, اما پس از خواندن محتوای فعلی از کلید ما نمی خواهیم برای ادامه. هنگامی که این اتفاق می افتد ما فقط ناظر تماس بگیرید به طوری که اتصال در حال حاضر می تواند به صورت رایگان برای معاملات جدید استفاده می شود.

استفاده از ساعت برای پیاده سازی زوپر

یک مثال خوب برای نشان دادن اینکه چگونه سازمان دیده بان می تواند مورد استفاده قرار گیرد برای ایجاد عملیات اتمی جدید در غیر این صورت توسط ردیس پشتیبانی نمی است برای پیاده سازی زوپوپ مکس ( زپوپمین , زپوپمکس و انواع مسدود کردن خود را تنها در نسخه اضافه شده است 5.0), که یک دستور است که باز عنصر با نمره پایین تر از یک مجموعه طبقه بندی شده اند در راه اتمی. این ساده ترین پیاده سازی است:

اگر اجرایی نتواند (به عنوان مثال یک پاسخ پوچ را برمی گرداند) ما فقط تکرار عملیات.

برنامه نویسی ردیس و معاملات

چیز دیگری به نظر برای معامله مانند عملیات در ردیس اسکریپت ردیس که معاملاتی هستند. همه چیز شما می توانید با یک معامله ردیس انجام, شما همچنین می توانید با یک اسکریپت انجام, و معمولا اسکریپت خواهد بود هر دو ساده تر و سریع تر.

در این صفحه

این یک وب سایت جامعه با حمایت مالی ردیس گیم است. © 2022. ردیس و لوگوی مکعب علامت های تجاری ثبت شده از ق گیم. شرایط استفاده و سیاست حفظ حریم خصوصی.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.