از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه ۷ آموزش Redis از صفر تا حرفهای، مدرس به توضیح نحوه پیادهسازی Redis در پروژه فروشگاه میپردازد. تفاوت اصلی Redis با دیتابیسهای معمولی مانند SQL در این است که در Redis ابتدا به کوئریهای مورد نیاز فکر میشود و سپس دیتا به صورت ساختارمند ذخیره میشود، در حالی که در دیتابیسهای معمولی ابتدا دیتا در جداول ذخیره میشود و سپس به کوئریهای مورد نیاز فکر میشود. همچنین، دیتا به دو دسته اصلی تقسیم میشود: ۸ (هش) برای دیتا با اتریبیوتهای متعدد و فرمتهای دیگر برای دیتا ساده و بدون اتریبیوت.
نکات کلیدی
Redis به صورت متفاوتی با دیتابیسهای معمولی مانند SQL کار میکند. در 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 را بهصورت کاربردی و پروژهمحور یاد بگیرد.