از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 11 آموزش Redis از صفر تا حرفهای، معلم به موضوع استفاده از پایپلان (Pipeline) در Redis میپردازد. این روش به کاربران امکان میدهد تا چندین هش را در یک درخواست ارسال کنند، به جای ارسال درخواستهای تکی. این کار باعث بهبود عملکرد و کاهش زمان انتظار میشود. همچنین، نحوه پیادهسازی این روش در کد جاوا اسکریپت و استفاده از مپ برای چک کردن آیتمها به صورت دو به دو مورد بررسی قرار میگیرد.
نکات کلیدی
استفاده از پایپلان در Redis به منظور ارسال چندین درخواست در یک جلسه و بهبود عملکرد.
پیادهسازی پایپلان در جاوا اسکریپت با استفاده از مپ برای چک کردن آیتمها به صورت دو به دو.
کاهش زمان انتظار با انجام عملیات Redis به صورت جلسهای.
استفاده از پایپلان در محیط تست برای ارزیابی عملکرد.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ بحث بعدیمون.
ما میخوایم این جلسه بریم سراغ یک موضوعی
یک در حقیقت نیازی که ما الان تو همین
اپلیکیشنمون بهش داریم.
فرض کنید شما میخواید
یک سری در حقیقت رو از توی دیتابیس
بخونید. مثلاً پ تا دونشو
چیکار میکنید؟ چهجوری این کارو میکنید؟
چون تا چیزی که ما تا الان یاد گرفتیم این
بوده که میرفتیم یه دونه هشو میخوندیم
اما خب تو همین برنامه که ما داریم بذارید
من برنامه رو باز کنم
تو همین برنامهای که ما داریم یه جایی اینجا نگاه کنید اینهاش نیاز داریم که
بریم یه چند تا هش رو بخونیم نه فقط یه
دونه ۸ رو حالا سؤالی که پیش میاد اینه که
ما چهجوری این کارو بکنیم یه راهش اینه
که من بیارم یه لوپ بزنم مثلاً روی بگم
برو روی تمام اینا هشا لوپ بزن دونه دونه
بخون برامون بیار خب که این روش روش منطقی
نیست چرا چون مثلاً فرض کن تو ۱۰۰ تا ۸
میخوای بگیری فرض کن ۱۰۰ تا ریکوست جدا
باید بزنی بعد باید برای هزارمی باید صبر
بکنی ۹۹ تا قبلی اجرا بشه که خب اصلاً روش
منطقی نیست
اینجاست که در حقیقت روش پایپلان میاد به
ما کمک میکنه. ما میایم از پایپلان
استفاده میکنیم.
به جای اینکه بیایم مثلاً میگم یه تعداد
زیادی ریکوست رو به صورت تکی تکی بزنیم کل
نیازی که داریم کل ریکوستها رو یکجا
میزنیم. بریم اول اینو تو یه محیط تست با
هم ببینیم بعد بیایم اینجا با هم اجراش
بکنیم. ما اینجا یه محیط تست داشتیم
یادتون باشه یه چیز به نام استندباکس
داشتیم. خب اینو یه تیکهشو پاک کنید.
خب اینم میخوام خلوتش کنم اینم پاک میکنم فقط این چیز بمونم
رنگ و س
من اول میام یه چند تا
ماشین رو توی دیتابیسم ذخیره میکنم فقط
جهت تست
میخوام اینا رو همه رو یه جا دریافت بکنم
با پایپلان
مثلاً این بشه ی این بشه ۲ این بشه ۳ این
بشه مثلاً گرین
۲۰۱۲ بشه ۲۰۱۳
مثلاً بلو
۲۰۱۴
خب
حالا من میخوام اینا رو یه جا دریافت
بکنم
خب با استفاده از پایپلان چهجوری این کارو
میکنم؟ ما یه دستوری داریم به نام پرامیس
آل مال جاوا اسکریپته بچهها که میاد تمام
اون در حقیقت پرامیسا رو یک جا
اصطلاحاً چیز میکنم کامپایلش میکنه نگاه
کنید یه همچین چیزی میشه
میگم اویت
یعنی من میخوام تمام این اویتها رو اینا که نه اون اویتهایی که میخوام جلوتر
بنویسمو یه جا برام چیز بکنیم
یه آرایه بهش باز میدیم یه آرایهای از ریکوستهایی که میخوامو میگم کلاینت
ا گت آبال
کار یک هستم بعد همینو برای د تای دیگه هم مینویسم خب
این میاد چیکار میکنه؟ کل اینا رو یه جا اجرا میکنه و نتیجه رو میتونم بریزم
داخل یک
چیزی مثلاً ریسالس
به این میگم پایپلان یعنی شما به جایی که
بیاید دونه دونه بزنید بیاید یه جا همه رو
اجرا میکنید یه کنسول لانگهم میزنم که
نتیجه رو بهم ندارم
بیا خب بریم اینو با هم اجرا کنیم محیط که سند
باکسو چهجوری اجرا میکردیم یاتونم
ام پی ام ران سند
باکس
نگا کنید یه جا آورد برام نتیجه رو به جای اینکه بخواد بریم دونه دونه بزنیم
میتونیم اینجوری یه جا در حقیق
درخواستمونو بزنیم بچهها یه مدل دیگه هم
میشه اینو نوشت که تمیزتره خب اینجوری
بگم کامندز
مساویه ۱ ۲ ۳ این حالا جاوا اسکریپته
بچهها مپ
زیر سمتش این چیکار میکنه؟ ۳ تا دونه لوپ میزنه. تو هر لوپش یه دونه از اینا درست
میکنه که داخلش میشه کار ۱، کار ۲ کار
س۳. اینو در قالب یک آرایه میریزه داخل
کامند. من اون آرایه رو میدم به این همون
قبلیه. هیچ فرقی نمیکنه. نتیجه همون
نتیجهست. بچهها نگاه کنید خروجیش همونه.
فقط س صرفاً یه ذره تره تمیزتره. خب حالا با این چیزی که یاد گرفتیم بریم اون گت
آیتمز رو پیادهسازی بکنیم.
بیام اینجا گوش اینا اینو پیاده سازی
بکنیم
دات مپ
آیدی
خب میگم ریترن بکنه کت.
اچ گت آ
خب
آیتمز کی اون آیدرو بهش میدم
میگم برو کل آیدیا که به عنوان ورودی گرفتی یه لوپ بزن دونه دونه براش یه دونه
اینو درست کن بعد بریز داخل کامند در
ادامه چیکار میکنم میگم که کانستارت
سایس با اویت
خب بعد میگم نتیجه رو بره داخل ریزال کل اون دق ریکوستا رو یه جا اجرا کن
فقط یه نکتهای من اینجا یه همچین کاری
میکردم وقتی میخواستم تک آیتم بگیرم یه
چک میکردم که آبجکت خالی نباشه بعدش
میآوردم داخل دیسیلا درسته اینجا هم باید
یه همچین کاری بکنم یعنی من دونه بدونه چک
بکنم بعد دیترلایزش بکنم. خب
اما چهجوری این کارو میکنم؟ میام میگم که
برو روی ریز یه مپ بزن. میخوام دونه دونه
چک بکنیم.
این بود ریترن کن نا در غیر این صورت ریترن کن چی اینو
حالا یه نک مشکلی آیدی رو از کجا بیارم من این آیدی که این بالا دارمو میخوام اینجا
توی مپ بچهها های مال جاوا اسکریپته. من
به یه چیز دیگه هم دسترسی دارم به نام
ایندکس. اسمشو مثلاً میذارم آیدی یا
ایندکس بذاریم آیدی ایکس
یا مثلاً رو ریزالت مپ میزنم هم به
ریزالت دسترسی دارم خب هم به آیدیش دسترسی
دارم مثلاً اولین عنصرش آیدی میشه آیدی
ایکسش میشه صفر بعدی میشه ی بعدی میشه د
خب حالا این صف ۱ د به چه درد من میخوره؟
میتونم بیام بگم که این ریزالت
آیدیش تو این میشه اولی دیگه درسته؟ پس
میتونم اینجا بکم این کارو بکنم
میتونم اینو ایکسشم بردارم که ایکس باشه یعنی میگم برو تو این لیسته آیدیها اولی
رو بردار اولی مال اینه
بعد دومی مال این اون یکیه همینجور به
ترتیب میره جلو
اینجوری میشه در حقیقت به اونا دسترسی پیدا
با استفاده از پایپلان نکته دیگهای نمیمونه اینم از بحث پایپلان بریم بیایم
ادامهشو جلسه بعدی صحبت کنیم فعلاً
خداحافظ
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
پایپلان در Redis امکان ارسال چندین درخواست در یک جلسه را فراهم میکند که باعث کاهش زمان انتظار و بهبود عملکرد میشود.
در جاوا اسکریپت، پایپلان با استفاده از مپ و ارسال درخواستها به صورت جلسهای پیادهسازی میشود.
استفاده از پایپلان در محیط تست به ارزیابی عملکرد و کاهش زمان انتظار در عملیات Redis کمک میکند.
آخرین بهروزرسانی محتوای متنی:
آموزش جامع و کاملاً عملی Redis به زبان فارسی؛ از نصب و راهاندازی تا پیادهسازی الگوهای حرفهای. در طول این دوره تمرینمحور، یک اپلیکیشن فروشگاه اینترنتی میسازیم و با مفاهیمی مثل مدلسازی داده، جستجو، همزمانی و ارتباط سرویسها در دنیای واقعی کار میکنیم. در این دوره چه یاد میگیرید؟ راهاندازی Redis بهصورت لوکال و کار با CLI دستورات افزودن و Query گرفتن از دادهها کار با Hashها، Listها، Setها و Sorted Setها (رتبهبندی و امتیازدهی) ایجاد یکتایی داده با Setها + تمرینهای عملی Pipelining برای بهینهسازی کارایی Design Patterns قدرتمند مخصوص Redis و نکات و Gotchaهای مهم تبدیل مدلهای رابطهای به مدل Redis (Data Modeling) HyperLogLog برای شمارش تقریبی توسعه قابلیتها با Scripting مدیریت Concurrency و حل مسائل همزمانی جستجو و فیلتر پیشرفته با RediSearch (Querying & Search in Action) ارتباط بین سرویسها با Streams پیادهسازی و تمرین مستمر روی پروژه E-Commerce مخاطبان برنامهنویسان بکاند و فولاستک، مهندسان داده و هرکسی که میخواهد Redis را بهصورت کاربردی و پروژهمحور یاد بگیرد.