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