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