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