از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی و اصلاح یک بخش از کد پروژه فروشگاه در Redis میپردازد. به ویژه، به اعتبارسنجی (Validation) در افزودن قیمت جدید به محصول پرداخته و شرایطی مانند وجود محصول، زمان پایان قیمتگذاری و مقایسه مقدار وارد شده با آخرین قیمت قبلی را بررسی میکند. همچنین، به اپدیت اطلاعات محصول در دیتابیس و ذخیره تاریخچه قیمتها در لیست تاریخچه اشاره شده است.
نکات کلیدی
اعتبارسنجی (Validation) در افزودن قیمت جدید شامل بررسی وجود محصول، زمان پایان قیمتگذاری و مقایسه مقدار وارد شده با آخرین قیمت قبلی است.
اطلاعات محصول در دیتابیس بهروزرسانی میشود و تاریخچه قیمتها در لیست تاریخچه ذخیره میشود.
بررسی شرایط قبل از اعمال تغییرات در Redis برای اطمینان از صحت و امنیت دادهها ضروری است.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ ادامه کارمون. میخوایم یه ذره بریم
سراغ من پروژه رو باز کنم.
خب یکی از اینا رو بذارید باز کنیم میخوایم بریم کدوم قسمتو درست کنیم
چراز نشدون
طرز عجیبی این قسمت کار نمیکنه. چرا ایرادی داره؟
یه کنسول لاگم گذاشتیم یه جا مونده داره اینا رو نشون میده فکر کنم بذارید ببینم
چی میگه
خب درست خب ببینید الان میخوایم بریم چیکار کنیم
یه ف این کل این فراینده
قرار دادن یک مبلغ رو درست بکنیم مثلاً
اینو باید درست کنیم که بالاترین پیشنهادی
که الان اومده چی بوده چند تا پیشنهاد تا
حالا اومده بعد یه ولیدیشن من باید رو این
بذارم و یه سری کارای دیگه که حالا جلوتر
بهتون میگم همه اینا رو باید بریم درست
بکنیم در اصل بچهها ما باید بریم اینو
درست کنیم
توی
کجایی تایپ کجاست تایپس
آیتم ببینید یه آیتم بچهها یه دونه پرایس داره باید درست کنیم کنیم. خب این پرایس
میشه بالاترین شرطی که در اون لحظه گذاشتم
براش. اینو باید درست کنیم. تعداد شرطایی
که تعداد در حقیق قیمتهایی که روی این
کالا گذاشته شده از طرف کاربرا باید
بذاریم و کاربری که بالاترین قیمتو گذاشته
اینا رو باید بریم همه رو درست بکنیم.
خب
یه فراآیند ولیدیشنی من باید انجام بدم
زمانی که کاربرم میاد یه مبلغی رو میزنه
داخل اینجا یه مبلغی رو میزنه من یه
ولیدیشنی باید انجام بدم چه ولیدیشنی
خب مرحله مرحلهتو مینویسم
[صدای خرناس]
اولین کاری که من باید انجام بدم
اینه که چک کنم اصلاً این آیتمی که این
کاربر داره روش شرط میذاره وجود داره یا
نه مثلاً این موقع صفحه فیک نباشه داز
د
آیتم
اگزیست
این از بیم چکمه
بعد میرم چک میکنم ببینم که آیا زمان هر راجع این آیتم تموم شده یا نه مثلاً من
زدم ۱۰ دقیقه آیا ۱۰ دقیقهش تموم شده یا
نه اگه تموم شده خب دیگه نمیتونه
قیمت بذاره
ایست
آیتم
استیل
اپن فور ا
شرط سوم مبلغی که کاربر من وارد کرده از مبلغی که
نفر قبلی وارد کرده بالاتره یا نه چون
باید بالاتر باشه دیگه مثلاً که نفر آخر
زده ۱۰ دلار تو نباید بیا بزنی ۹ دلار چون
۱۰ دلاره برندهست
پس
[صدای خرناس] این سه تا شرطو باید در حقیقت رعایت بکنم.
حالا بعد از اینکه این سه تا شرط اوکی شد
تازه باید وارد فراآیند ذخیرهسازی اون
دیتا بشیم. اولین کاری که باید بکنیم اینه
که اون مبلغی که کاربرم زده رو ببرم تو
اون لیسته ذخیره کنم تو اون هیستوریه
که جلسه قبل راجعش صحبت کردیم.
ببین [گلویش را صاف میکند] بذار من اینو با یه ستاره بذارم کنارش این
فرنده که باید اتفاق بیفته
بعدش
باید برم خود
اون اطلاعات اون آیتمه رو تغییر بدم اون
پرایسشو تعداد در حقیقت قیمتی که روش
گذاشته شده
بعدی باز قیمتو باید تغییر بدم
که میشه آخرین قیمتی که گذاشتم بعد یوزری که قیمتو گذاشته رو باید تغییر
بدم
این فیلیدش بود دیگه یه کار
دیگه هم هست اینجا خب من اینو جدا
مینویسم چون بحثش جداست من باهاش براش یه
هشتگ میذارم اینجا آپدیت اینو مفصل براجش
صحبت کنیم
آیتمز اسکور
آیتم پرایس
سورتد ست اینو راجعش صحبت میکنیم خب بریم
سراغ اینا اینا رو درست بکنیم بعد از
اینکه این ولیدیشن البته انجام دادیم
میایم اینجا
داره اون قیمت ثبت میشه توی فقط دیتابیس من دیگه درسته پس همه ولی
ولیدیشنها باید اینجا اتفاق بیفته.
اولین ولیدیشن چی بود؟
اولین ولیدیشن که اصلاً اون آیتم وجود
داره یا نه؟ یعنی من چک کنم اون آیتمی که
این داره روش شرط میذاره وجود یا نه.
داخل این
کی میشه؟ این نه این نمیشه این میشه
من آیتم آیدیو دارم فقط کافیه برم یه
فانکشنی داشتم به نام گت آیتم یادتونه از
اون استفاده کنم ببینم که این آیتم آیدی
رو میدم آیتم برمیگردونه یا نه خب بیایم
اینجا
میگم که
آیتم مساوی با اویت گت
آیتم
خودش ایمپورت کرد چیو بهش پاس میدم میگم برو تو اتریبیوتم
یه آیتم آیدی دارم اونو با این برو یه
دونه آیتم پیدا کن بعد ببین آیتم هست یا
نه خب اینجا باید پس یه شرط اول بذارم
اگه آیتمه نبود
ایف
آیتم نبود در اون صورت
نیو ارور
خب حالا این س بعدی
اس بعدی چی بود چک کنیم اینکه مبلغی که
داره وارد میکنه از آخرین مبلغ قبلی که
وارد شده آیا بالاتر هست یا نه اگه نیست
باید خطا بدم خب پس ایف
آیتم.پس پرایس یعنی آخرین قیمتی که قبلاً وارد شده آیا اگر بزرگتر از اون قیمتی
باشه که الان کاربرم داره وارد میکنه
یعنی اینور
رفته باشه بزرگتر مساوی
در اون صورت باز یه خطا بده
که این مثلاً کمه باید بیشتر بذاریم.
شرط بعدی چی بود؟ اینکه زمان قیمتگذاری رو اون کالا تموم
شده یا نه. من باید چیو چک کنم اینجا؟
باید اندینگ تایم اون آیتمه رو چک کنم که
تو اینجا دارمش اینوها.
آیتم اندینگ اینو با زمان الان چک کنم. ببینم تموم شده یا
نه خب چک کرد هیچ کاری نداره
انing خب این اختلافش
اختلافش با.
تبدیلش میکنم به میلیثانیه. اگر این کوچیکتر از صفر باشه یعنی تموم
شده.
یه چیزی اینجا اشتباهه. یه پرانتزی اشتباهه.
یه پرانتز اینو باید از بردارم درش. خب اگر این بود باز خطا
آیتم کلوز تو ب
پس تا شرطی که من لازم بودو الان چک کردم خب الان بذارید ببینم که این آیتمه
۱۰ دقیقهش تموم شده آره میگه ۴۸ ثانیه قبل
تموم شد خب من اصلاً پس اجازه نباید بده
شرط ثبت کنم میگه تموم شد شرط زمانت
خب این از این
حالا بریم آپدیت بکنیم اینا رو این د تا رو باید آپدیت کنم هر دفعه که یه
قیمت بالاتر میاد این باید اون آپدیت بشه
اینم باید یه دونه زیاد بشه
بریم اینو چک کنیم
این این ریتیلو برمیدارم چون یه دونه دیگه
نیست د تا فرمده اتفاق بیفته
به جاش مینویسم بذارید من اینو بردارم
کلاً
میگم ریت پرامیس چون چند تا شده باید پرامسآ برم
جلو
یه آرایه است. خب اول اینو میذارم بعد میرم سراغ دومی
میام کینت.
اچ ست یه هش کد بود دیگه بخش ست بود دیگه
خب
میگم که
من اول نیاز به اون آیتمه دارم کدوم آیتمو
تو میخوای تغییر بدی یه چیزی داشتیم به
نام آیت یه کلیدی داشتیم به نام آیتمز کی
ایناها اینو ایمپورت میکنید این بالا
ایناش
آیتم آیدی رو بهش پاس میدم.آیدی
آیدی خب میگم من میخوام تو این بری چند
تا چیزو عوض کنی
میخوام تو این چند تا چیزو عوض کنی یک
تعداد شرطها تعداد قیمتهایی که گذاشته
شده رو یه دونه زیاد کن هرچی قبلاً بوده
پلاس
این اولین تغییر
بعد قیمتو میخوام عوض بکنیم به آخرین
قیمتی که گذاشتم یعنی آخرین قیمتی که
اومده
و ولیدیشنو رد کرده و
هایست بید
یوزر آیدی بشه
این. یوزر آیدی تو داخل یوزر آیدی هست
کسی که میاد شرطو میذاره
ایناش ما یوزر آیدیشم داریم پس این آپدیت باید اتفاق بیفته
و دقیق تو دیتابیسمونم تغییر بکنه خب بریم
یه چک کنیم
من یه قیمت ۱۰ دلار میذارم البته این تموم شده شرطش بذار جدید بیارم
مثلاً
بذار بیشتر بزنیم تایمو یک روز خب من
میذارم ۱۴ تا
این باید بشه ۱۴ درسته این باید بشه ی بعد
این الان برندهست چون بالاترین پیشنهاد
داده و یه چیز جالب اینجا رو نگاه کنید
میگه قیمت بعدی که میخوای یکی بخواد
پیشنهاد بده باید بیشتر از ۱۴. ۱ باشه
حداقل باید این باشه و اینا من قبول
نمیکنم این الان بیا بیام ۱۳ چون کمتر از
دفعه قبله قبول نمیکنم بذارم ۱۵
این آپدیت میشه میشه ۱۵ اینم میشه ۲ و
میشه دقت اون برنده جدیدمون
خب چی دیگه میمونه انجام بدیم خب تا اینجا فعلاً کفایت میکنه بریم بیایم
ادامهشو جلسه بعدی صحبت کنیم فعلاً
خداحافظ بس
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
در اعتبارسنجی افزودن قیمت جدید، وجود محصول، زمان پایان قیمتگذاری و مقایسه مقدار وارد شده با آخرین قیمت قبلی بررسی میشود.
بله، اطلاعات محصول در دیتابیس بهروزرسانی میشود و تاریخچه قیمتها در لیست تاریخچه ذخیره میشود.
آخرین بهروزرسانی محتوای متنی:
آموزش جامع و کاملاً عملی 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 را بهصورت کاربردی و پروژهمحور یاد بگیرد.