از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه سوم آموزش فارسی Redis از صفر تا حرفهای، مدرس به پروژه فروشگاهی معرفی میشود که با استفاده از Redis پیادهسازی میکند. ابتدا لینک پروژه استارت ارائه شده و نصب دپندنسیها و فایلهای لازم بررسی میشود. سپس به اتصال Redis با استفاده از کتابخانه Node Redis میپردازد و نحوه استفاده از Redis برای ذخیرهسازی دادهها در صفحات مختلف ارائه میشود. همچنین، فرآیند کش کردن صفحات و استفاده از Redis برای بهبود عملکرد سایت توضیح داده میشود. در ادامه، مدرس به بررسی نحوه پیادهسازی Redis در یک سیستم فروشگاهی میپردازد و نحوه چک کردن وجود یک روت در لیست و استفاده از Redis برای ذخیره و بازیابی اطلاعات پیج کش با هشتگ معرفی میشود. همچنین، ایجاد یک فانکشن کمکی برای سادهسازی کد و جلوگیری از تکرار توضیح داده میشود.
نکات کلیدی
پروژه فروشگاهی با Redis پیادهسازی میشود و لینک پروژه استارت ارائه شده است.
Redis با استفاده از کتابخانه Node Redis اتصال مییابد و دادهها در صفحات مختلف ذخیره میشوند.
استفاده از Redis برای ذخیره و بازیابی اطلاعات پیج کش با هشتگ
ایجاد یک فانکشن کمکی برای سادهسازی کد و جلوگیری از تکرار
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. خب بریم سراغ ادامه کارمون. ما توی جلسات
قبلی اومدیم یک دقیق با کامندای اولیه
ردیس آشنا شدیم. کامندای ردیس بچهها خیلی
بیشتر از ایناست ولی نمیخوام برم الان
دونه دونه همه کامندا رو بهتون بگم. جلوتر
که بریم توی پروژهها و برنامههای مختلف
اینو یاد میگیریم.
الان میخوایم بریم سراغ اولین پروژهای
که میخوایم کار بکنیم. یه اپلیکیشن آماده
است یعنی کاملاً فرانتش نوشته شده آماده
است ما فقط قراره بریم دق ردیس رو تو این
اپلیکیشن پیاده سازی بکنیم
یه سری مراحل داره این مراحلو با من پیش
بیاید و بچهها خیلی هم نگران این قسمت
اپلیکیشنا نباشید اصلاً شما در قرار نیست
درگیر این چیزا بشید با یه دقت کد فرانتی
نوشته شده اصلاً مهم نیست کاری نداریم ما
قمت ردیسشو بریم پیادهسازی زی بکنیم.
خب ازا من لینک پروژه استارت رو بهتون
بدم. از این لینکه تو گیتهاب دریافت بکنید
و بعد به بریم جلو.
خب بچهها از این لینک میتونید پروژه استارتر ما رو دریافت بکنید. خب
برید داخل ریپوزیتوری خود ما و اینجا
دریافت بکنید. یه پروژه استارتره با تایپ
اسکریپت نوشته شده و اسفلت هم استفاده شده
ولی اصلاً کاری نداریم بچهها دقیق این
چیه. اصلاً نمیخوایم ورود بکنیم
فقط میخوایم قرار ازش استفاده بکنیم
خب بریم سراغ اینکه از این پروژه استفاده
بکنیم این پروژه هست خب
اولین کاری که باید بکنیم اینه که بریم
سراغ اینکه دپندنسنسی رو نصب بکنیم قبلش
حتماً رو سیستمتون بچهها نود جی اس نصب
باشه برید تو سایت نود جی اس دانلود بکنید
و نصب بکنید هیچ کاری هم نداره این نکته
خاصی نداره
بعد که نصب کردید میاد داخل پروژه
میرید تو مسیر پروژهتون
خب میرید توی اون مسیری که این پروژه رو
ذخیره کردید یه دونه امپمنستال میزنید که
تمام دپندنسیاش
نصب بشه اینو میزنم
یه ذره زمان میبره بعد تمام دپندنسیاش
نصب میشه
حتی جا که بشه ویدیو رو پاز نمیکنم که مراحلو ببینید.
خب بعد که این کارو کردید استپ بعدی چیه؟ یه
فایلی هست اینجا به نام ای ام وی
که در حقیقت میاد یه سری مقادیر رو اینجا
ذخیره میکنه. یه سری مقادیر رو که تو کل
پروژهتون قراره استفاده بکنید.
ما اینجا چیا رو باید ذخیره بکنیم؟ نحوه
اتصالمون به در حقیقت ردیس رو اول هاست
نیمشو میخوام میام تو ردیس لاگین که بکنم
اون چیزی که جلسات قبلی درست کردیم با همدیگه قراره اونو استفاده بکنیم
خب
اینو ما اس درست کرده بودیم یادتون باشه
میام داخلش این پایین یه جا کانکشنش بود
ایناش
اینو و تا اینجاشو کپی کنید به عنوان هاست
ببخشید
پسوردش چیه این پایین بود سکیوریتی
اینم پسورد
خب ما الان متصف شدیم کارا رو انجام دادیم بریم سراغ پروژمون
بچهها ما توی پروژمون خب بذارید پروژم
ران کنم ببینید
این پروژههمونه که الان چون چون هیچ دیتایی ما ذخیره نکردیم چیزی هم اینجا
نداریم نشون بدیم که حالا ما استپ به
استپراره اینو پیادهسازی بکنیم.
ما توی این پروژه بچهها قرار نیست مثلاً
مستقیماً کدای دقت کامندی ردیس رو
بنویسیم. خب
اینجا نگاه کنید اول که ما تو این پروژه
با این قسمت کار داریم توی قسمت
سرویس یه کوری داریم یه ردیس ما تو این
قسمتا باید بریم کار بکنیم کارمونو انجام
بدیم خب
حالا من قرار نیست مثلاً برم
اینجا نگاه کنید مثلاً اینجا
برای مثلاً ساختن یه چیزی برای گرفتن اون
از مثلاً یه جایی خب اینجور کارا رو من
قرار با ردیس انجام بدم. فقط نکته چیه؟
نکته اینه که ما قرار نیست بریم اینکه خود
کد ردیس رو مستقیماً اینجا بنویسیم چون
طبیعتاً متوجه نمیشه.
اینجا قراره بریم سراغ یه کتابخونهای که
در حقیقت میاد زبان کامندای ردیس رو برای
ما تبدیل میکنه به یک زبان دیگه که قابل
فهمه اینجا.
ولی خیلی هم شبیه همن بچهها. یعنی
اینجوری نیست که فکر کنید مثلاً یه چیز
عجیب و غریبیه که ما الان باید بیم دوباره
یه چیز جدید یاد بگیریم. نه.
اسمش چیه؟ بریم با هم ببینیمش.
نود جس ردیس یه چیزی داریم به نام نود جس
ردیس.
بریم توی گیتهاوش. نود ردیسه فکر کنم همینه.
یه چند تا مثالشو میخوام با هم ببینیم. اینا کانفیگشو کاری نداریم. آها نگاه کنید
مثلاً میخواد یه چیزی ست بکنه ما اونجا
میگفتیم ست ادامشو مینوشتیم اینجا
اینجوریه دقیقاً نگاه کنید بچهها کیو
ولیو داره بعد اکسپایر تایم داره ان ایکس
داره همونه
یعنی تمام کامندا رو اومدن معادلسازی
کردن
مثلاً میخوایم گت بکنیم میگیم کلاین. گت
همونه یعنی شما نگرانی نباید داشته باشید
که من الان قراره یه چیز جدیدی یاد بگیرم
نه قراره از همون کامندای
در حقیقت خود ردیس استفاده کنیم فقط یه
تغییری داده شده که در حقیقت جاوا اسکریپت
اینجا بفهمه اون ردیس کامنداشو
خب بریم سراغ
اولین پیاده سازیمون فقط قبلش اجازه بدید
من یه چیزی نشونتون بدم
کامنداشم بهتون نشون بدم ردیس کامند نگ کنید بچهها کلاً اینجا توضیح داده
خیلی هم سادهست یعنی واقعاً پیچیدگی خاصی
ن سایتش رنگ بدی داره
چشم اذیت شد ببند
خب بریم بریم سراغ ادامه کارمونه روت من
فم مانگیتورم یه ذره چیز دارم حالا
پس خیلی نگرانی بابت این قضیه ما نداریم
بعد عین کتابخونه بچهها تو زبان دیگه هم
هست مثلا برای جاواشم هست برای اینکه با
ردیس در حقیقت کار بکنم حالا ردیس قا عمل
بشه حتماً اصلاً راجع به این صحبت بکنیم
در حالت عادی شما وقتی یک سایتی رو باز
میکنید روی مثلاً یه صفحهای رو میزنید
به عنوان مثین سایت خودمون خب خب که داریم
میخوایم کار کنیم یکی از تب رو وقتی
میزنم مثلاً پرایوسی رو میزنم این میره
چیکار میکنه؟ میه یه ریکوست میده به سمت
سرور. سرور یه دیتایی رو برمیگردونه بعد
سمت کلاینت این دیتای رندر میشه میشه به
این چیزی که شما میبینید در بعضی مواقع
مثلاً با یه سری تکنولوژیا میان این رندر
رم سمت سرور انجام میدن بهش میگن سرورساز
رندرینگ کاری اصلاً نداریم این چیزا
خب پس ما عملاً داره چه اتفاقی میفته؟ ما
یه ریکوستی میزنیم یه اطلاعاتی رو
میگیریم بروزر رندر میکنیم وقتی دوباره
ریکوست بزنیم برای این من اینو رفرش کنم
دوباره همین فرایند اتفاق میفته و این
فرایند بچهها فریند کندیه این رندر شدنه
اینجاست که ردیس میاد درق وارد میشه میگه
که تو اون رندر شدهه رو یعنی صفحهای که
رندر شده رو بده به من ببرم تو ردیس ذخیره
کنم دفعات بعدی که ریکوست اومد برای این
صفحه
از ردیس بخون دیگه و چون ردیس سریعه سریع
هم دق اطلاعات لود میشه این میشه دق کاری
که ق ردیس برا ما انجام بده یعنی میاد این
وسط داستان میشینه میگه اگه قراره ریکوست
بزنی پیجای خاصو بگیری اون اطلاعات اون
پیجا رو من دارم تو خودم تو یه جایی هم
نگه میدارم چون اکسپیر تایم داره دیگه
اگر داشتم از من بگیر سریع لود کن اگه
نداشتم برو از دیتابیس از سرور بگیر ولی
دوباره به من بده که من ذخیره کنم. دقیقاً
همون فرهنگی که قبلش توضیح داده بودم
بهتون.
بذارید یه عکسم براتون بیارم.
این عکسو ببینید این قراره فرنده قراره اتفاق بیفته. یوزر یه ریکوست میده میاد
اینجا تو سرور. خب بعد میرن فکر میکنن ب
این یوزره قراره کدوم پیج و اطلاعاتشو
ببینه. بعد میرن نگاه میکنن میگن که این
پیجه اطلاعاتش تو ردیت هست یا نه؟ اگر بود
که میاد تو این مسیر میگه خیلی خب جوابو
بده من نشون کاربر بدم اما اگه نبود برو
اطلاعاتو از دی از سرور بگیر رندر بکن بعد
دوباره اطلاعاتو بده برای ردیس که برای
استفاده بعدی بشه ازش گرفت البته تا پایان
زمان اکسپیر تایمش این میشه فرنت قر اتفاق
بیفته
حالا بریم اینو تا جایی که میشه پیاده
سازی بکنیم
و خیلیهم ساده میخوام بگم تا جایی که
میشه میشه و سختش نکنم
فقط اجازه بدید من اینور فایلم آماده کنم نکته مهمی که هست اینه که بچهها ما قرار
نیست تمام صفحات سایتمون رو کشف بکنیم خب
اصلاً این کارو قرار نیست بکنیم چون منطقی
هم نیست بعضی صفحات خیلی صفحات سنگینی
هستن اینجا ما میگیم که ما فقط صفحات رو
بعضی صفحاترو کشف میکنیم مثلاً تو این
مثال ما من قراره چه صفحاتی رو کشف بکنم
یکی پرایوسی رو یکی اووتو
و یکی هم لاگینمونو صفحات لاگین یعنی ساین
اینین و ساین آپ این د تا رو فقط همین چار
تا صفحه رو من میخوام کشف بکنم میام توی
پروژم
توی قسمت
پیج کش اینجا میخوام د تا فانکشن دارم یکی کش میکنه یکی گت میکنه کنه که ست
میکنه. بریم اینو با هم پیادهسازی
بکنیم.
اول باید چیکار کنم؟ اول باید کلاینت
ردیسو اینجا ایمپورت کنم. من کلاینت ردیسو
اینجا نوشتم. ناشش اینه نحوه اتصال به
ردیسه. اصلاًم کاری نداریم چهجوری نوشته
شده. فم کن ازش استفاده کنم. میگم اونو
ایمپورت کن. ایمپورت
کلاینت
فرام
از توی سرویسز
فایل ردیس
از اینجا بیارش
اون صفحاتی که من قراره کشف بکنمو توی
متغیری ذخیره میکنم کانست اسمشو میذارم
ش روت
یکی چی بود اسلش اوت بود یکی چی بود اسلش پرایوسی
این روتهایی که من قراره کشف بکنم حالا بریم داخل دقت گت اول گتو بنویسیم
من اول باید چک کنم ببینم اون روتی که
کاربر من ریکوست داده و تو ورودی اینجا
دارمش ایناها این ورودیوه آیا توی اون
لیستمون بالا هست یا نه پس میگم ایف
اون کشت من اون بالا اون لیسته آیا شامل
اینکلودز این روتی که الان کاربر ریکوست
داده هست یا نه یعنی این روته داخلش هست
یا نه سادهشو بگم
اگر بود چیکار کن برو گت کن برو اینو از
توی ردیت گت کن ریترن کن
کلاینتگ
حالا اینجا ما یه سیستم سیستم نامگذاری اومدیم توی ردیس پیاده سازی کردیم برای
ذخیره فایلا اینجوریه میگیم پیج
کشیه
هشتگذاشتیم
بعد یه دونه اسم روتو در ادامش اضافه کردم
یه همچین سیستم نامگذاریه پیج کش هشتگ
اسلش مثلاً پرایوسی مثلاً خب اینو میره
میگیره از تو دیتابیس ردیس اگرم تو اون
لیسته نبود که اصلاً کلاً چیزی
برنمیگردونه نال میگه من ندارم برو برو
از سرور بگیر.
خب
این میشه گت.
حالا همینو ما برای ستم باید پیادهسازی
بکنیم. بگیم اگر روتهت اون بود برو ستم
بکن. پس میام اینجا
یه چیز شبیه همینه بچهها.
همین سیستم نامگذاری چه اطلاعاتی رو باید ذخیره کنه؟ اطلاعات
پیجی که رندر شده رو یادتون باشه گفتم که
اینجا اگر تو ردیس نباشه این مسیرو بیاد
اون اطلاعات رندر شده رو میبره تو ردیس
ذخیره میکنه برای استفاده بعدی
اینجاهم اتد رندر شده داره میاد و روتشم
داره میاد
پس با این اسم این کلیدمه اینم ولیومه
میره ست میشه داخل ردیس
حالا اینجا یه نکتهای البته ریترنال دیگه نداره چون قرار هست ریترن داشته باشه
نکته چیه من میخوام یه اکسپارت تایم بذارم
میام اینجا یه دونه آبجکت به این اضافه
میکنم یه آپشن به این اضافه میکنم میگم
ای ایکسش ۲ ثانیه باشه من میخوام بعد از
دو ثانیه این اطلاعات چی بشه از بین بره
تو ردیس نمیخوام بیشتر از این اونجا نگهش
داریم خب
الان اپلیکیشن شون باید کار بکنیم نباید
مشکلی داشته باشه بریم چک کنیم
خب من میام توی پرایسی
یه رفرشم میدم ساین این یه رفرش سایم آپ
یه رفرش
آتاس یه رفرش خیلی خب
این از این بریم
یه تغییر کوچولو هم بدم این یه تیکه رو میبینید بچهها.
اینو
خب من میتونم اینو در قالب یه دونه چیز
بنویسم فانکشن کوچولو بنویسم که هی نخوام
اینو هی کپی پیست کنم اینو هر دفعه
استفاده کنم میام توی یوتیز
توی کیز اینجا این فانکشنلو مینویسم
مینویسم اکسپورت
اینا بچهها دیگه برنامه جاوا اسکریپت
اصلا من نمیخوام یاد بگیرید فقط مفهومشو
یاد بگیرید میگم یه فانکشن میخوام بنویسم
به نام پیج
کش کی خب مساوی یه آیدی به عنوان ورودی
میگیره از جنس استرینگ
چی برمیگردونه یه بک تیک میذارم پیج
کش هشتگ اون آیدیه
حالا من میتونم از این فانکشن استفاده کنم
بیام اینجا خب اینو ایمپورتش کنم هر دفعه
میخوام اون آدرسه رو درست کنم این کارو
بکنم میگم که ایمپورت بکن
اینو
از
سرویسز اسلش
حالا به جای اینکه من میخوام هی اینو بنویسم اینو
میریزم جاهاش فقط اون روتر بهش میدم این
خودشونو درست میکنه برام
این خیلی تن تمیزتره
ب
پس تا اینجا ما تونستیم ردیس رو بیایم داخل این اپلیکیشن پیادهسازی بکنیم بریم
بیایم ادامهشو جلسه بعدی صحبت کنیم فعلاً
خداحافظ
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
Redis با استفاده از کتابخانه Node 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 را بهصورت کاربردی و پروژهمحور یاد بگیرد.