مهندس نرمافزار عاشق قهوه
سلام! من بهمن شادمهرم من بهمنام، یه برنامهنویس و توسعهدهنده نرمافزار که عاشق چالشهای فنیام! این چند سال گذشته، بیشتر وقتهام رو صرف این کردم که با یه لپتاپ و یه اینترنت درستحسابی، سیستمهای عجیب و غریب بسازم و مشکلات بقیه رو حل کنم (از همونایی که میگن "این دیگه چطوری کار میکنه؟"). از نوشتن کدهای باحال و اتوماتکردن سیستمهای انرژی گرفته تا تریدینگ با دادههای پرسرعت، حسابی سرم شلوغ بوده. یه پروژهای داشتم که حسابی دردسرساز بود ولی آخرش تونستم با بهینهسازی زیرساخت، ۵۰ درصد هزینهها رو کاهش بدم! (میدونی وقتی هزینه رو اینقدر کم میکنی، چه جوری همه باهات رفیق میشن؟!). بعضی از پروژههایی که انجام دادم: CoffeeCodeCamp: یه پلتفرم که بهتون یاد میده کد بزنید و هر چی نوشتید رو هم خودش تست میکنه! MasterYourCourses: یه سیستم مدیریت دورههای آموزشی که کاملترین امکانات رو داره. CryptoCasting: این یکی برای عاشقای تریدینگ! پلتفرمی برای جمعآوری دادههای با سرعت بالا. اگه بخوام از مهارتهام بگم، بیشتر با پایتون و گلانگ ور میرم، توی AWS و GCP غرقم و از Docker و Kubernetes هم برای نگهداشتن سرویسها استفاده میکنم (یه جورایی مثل کارهای عادی روزمرهم شدن اینا!). همیشه دوست دارم با سیستمهای پیچیده سر و کله بزنم و کدهای خفنتر بنویسم. راستش از اینکه زیرساختهای نرمافزاری رو بهینه کنم و هزینهها رو پایین بیارم هم بد نمیاد؛ آخه کی از کمشدن هزینهها بدش میاد؟!
به عنوان یه برنامه نویس، آشایی با دیتابیسهای in memory مثل ردیس یکی از واجبات محسوب میشه. علتش هم استفادههای زیادیه که از اون میشه داشت.
به عنوان یه برنامه نویس، آشایی با دیتابیسهای in memory مثل ردیس یکی از واجبات محسوب میشه. علتش هم استفادههای زیادیه که از اون میشه داشت.
اول ببینیم ردیس چیه؟
طبق گفته ی خود وبسایت ردیس، ردیس یه دیتا استراکچر ذخیره شده توی مموری هستش که به عنوان دیتابیس، سیستم کش و مسیج بروکر هستش. توی ردیس ما میتونیم دیتاهایی مثل strings، hash، list، sets و sorted set و انواع دیگه ای از داده رو ذخیره کرد. همونطور که گفته شد، ردیس یه دیتابیس in memory هستش. یعنی اطلاعات رو توی رم ذخیره میکنه و با ریستارت شدن سرور، اطلاعاتش پاک میشه. البته در صورت نیاز ما میتونیم شکلهای مختلفی از ذخیره شدن اطلاعات رو هم داشته باشیم.
حالا شاید براتون سوال باشه که چرا باید از ردیس استفاده کنیم؟ سناریوهای زیر رو در نظر بگیر:
۱. کش کردن اطلاعات:
فرض کن یه سیستم بزرگ نوشتی که قراره تقویم بعضی از کاربرها رو توی وبسایت نشون بده. مثلا برنامه کاری مطب دکتر و یا تایمهای خالی مدرس خصوصی. هر بار که قراره تقویم رو نشون بدی، به ازای هر کاربر باید ۱۰ تا کوئری سنگین بزنی تا بتونی برنامهی کاریش رو بسازی. این کار میتونه زمان بر باشه. برای مثال ممکنه برای نشون دادن اطلاعات چند استاد، تا چند ثانیه هم زمان ببره. ما نمیخوایم کاربرها رو اینقدر معطل بذاریم. برای همین میایم و از ابزارهایی مثل ردیس استفاده میکنیم تا نیاز نباشه هر بار تقویم رو از اول بسازیم.
۲. قطع کردن دسترسی بعضی از توکنها:
فرض کن برای سایتت از JWT استفاده کرد. در واقع اعتبار سنجی کاربرها رو با استفاده از توکنهای JWT انجام میدی. حالا می خوای به کاربر لیست سشنهای فعالش رو نشون بدی. در واقع دیوایسهای فعالی که باهاشون لاگین کرده. و میخوای این امکان رو به کاربر بدی تا بتونن بعضی از سشنها رو غیر فعال کنن. یکی از ابزارهایی که به کمک اون میتونی این کار رو انجام بدی، ردیسه.
۳. انجام تسکها در بک گراند:
فرض کن قراره بعد از هر سفارش، یه فایل PDF برای اون سفارش ایجاد کنی و اون رو برای کاربر ایمیل کنی. این کار ممکنه زمان زیادی ببره. ما هم طبق معمول نمیخوایم که کاربر رو منتظر بذاریم. اینجا باید یه صف ایجاد کنیم، یه سری تسک رو داخلش بریزیم و یه اسکریپت داشته باشیم که اون تسکها رو به ترتیب توی بک گراند ایجاد کنه. یکی از ابزارهایی که برای این کار به ما کمک میکنن، ردیسه.
سه نمونهی بالا فقط یه سری از مواردی بودن که ما میتونیم به کمک ردیس انجام بدیم. سناریوهای زیاد دیگه ای هم وجود داره که به عنوان یه برنامه نویس بهشون بر میخوریم.
توی این وبینار، قراره که با دیتابیسهای in memory بیشتر آشنا بشیم. مثالهایی که ممکنه بهشون بر بخوریم رو بررسی کنیم. در نهایت هم خود ردیس رو کار میکنیم و یه سری دیتا تایپهای اون رو بررسی میکنیم.
faq
دورههای آموزشی ما با تمرکز بر یادگیری عملی طراحی شدهاند تا شما را آماده بازار کار کنند.