از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 38 آموزش 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 را بهصورت کاربردی و پروژهمحور یاد بگیرد.