Redis Demystified: مقدمه ای ساده برای طراحی سیستم 🧩

احتمالاً هنگام یادگیری طراحی سیستم بارها با کلمه Redis مواجه شده اید. این آموزش به شما درک بهتری (امیدوارم) از آنچه Redis از منظر مبتدی است، می دهد، و در آینده، ما عمیق تر به نمونه های واقعی از نحوه پیاده سازی Redis در برنامه های خود خواهیم پرداخت.
Redis چیست؟
Redis یک سرور ساختار داده یا ذخیرهسازی داده تک رشتهای و درون حافظه است. در مقایسه با پایگاه داده های سنتی فوق العاده سریع است زیرا در آن کار می کند حافظه (RAM) به جای ذخیره سازی دیسک.
اینهمه اصطلاح؟ جای نگرانی نیست! بیایید آن را تجزیه کنیم و هر یک را درک کنیم:
تک رشته ای
Redis تمام درخواست ها را در یک رشته پردازش می کند. در حالی که این ممکن است مانند یک گلوگاه به نظر برسد، اما در واقع یک انتخاب طراحی کاملاً فکر شده است که سادگی و کارایی را تضمین می کند. Redis با استفاده از مکانیزمی به نام به این کارایی دست می یابد I/O Multiplexing.
درک مولتی پلکس I/O با آنالوگ
گارسونی را در یک رستوران شلوغ تصور کنید که در آن مشتریان برای سفارش دادن به صف ایستاده اند. اگر پیشخدمت هر بار به یک مشتری رسیدگی می کند – منتظر می ماند تا آنها منو را مرور کنند و تصمیم بگیرند که چه چیزی را سفارش دهند – سایر مشتریان باید بیشتر منتظر بمانند.
اکنون، بیایید یک بهبود ایجاد کنیم: پیشخدمت منوها را در هر میز قرار می دهد تا مشتریان بتوانند از قبل در مورد سفارشات خود تصمیم بگیرند. گارسون به جای منتظر ماندن برای آماده شدن هر مشتری، بلافاصله از کسانی که آماده هستند سفارش می گیرد و زمان انتظار را به میزان قابل توجهی کاهش می دهد.
این شبیه به نحوه عملکرد I/O Multiplexing در Redis است.
- سرور Redis به تمام درخواست های دریافتی گوش می دهد.
- برخی از مشتریان ممکن است بیکار باشند (مثلاً، دستورات را ارسال نمی کنند).
- Redis درخواست هایی را که آماده رسیدگی هستند پردازش می کند و از عملیات روان و سریع اطمینان می دهد.
با انجام این کار، Redis عملکرد را بهینه می کند و بدون نیاز به چندین رشته یا مکانیسم های قفل پیچیده، کارها را ساده نگه می دارد.
در حافظه
ردیس یک است در حافظه ذخیره داده، یعنی تمام داده های خود را در آن نگه می دارد RAM برای دسترسی سریع این طراحی در حافظه به Redis اجازه می دهد تا برای عملیات خواندن و نوشتن بسیار سریع باشد، زیرا دسترسی به داده ها از RAM بسیار سریعتر از ذخیره سازی دیسک است.
با این حال، از آنجایی که RAM فرار است، به این معنی که در صورت از کار افتادن سرور، داده ها از بین می روند، Redis مکانیسم هایی را برای اطمینان از تداوم داده ها حتی در صورت خرابی های غیرمنتظره فراهم می کند. Redis به صورت دوره ای داده های خود را با استفاده از دو مکانیسم روی دیسک ذخیره می کند:
-
عکس فوری: Redis مجموعه داده را در بازه های زمانی مشخص در دیسک ذخیره می کند و یک عکس لحظه به لحظه از داده ها ایجاد می کند. به طور پیش فرض، Redis این عکس فوری را روی دیسک می نویسد:
- هر 900 ثانیه (15 دقیقه) اگر حداقل یک کلید تغییر کرده باشد.
- هر 300 ثانیه (5 دقیقه) اگر حداقل 100 کلید تغییر کرده باشد. (این داده ها از منابعی مانند Google جمع آوری شده است، اما همیشه خوب است که اسناد Redis را برای دقت بررسی کنید.)
-
فایل فقط پیوست (AOF): Redis همچنین میتواند هر عملیات نوشتن را در یک فایل فقط پیوست ثبت کند و در صورت خرابی، دادهها را بازسازی کند.
این تنظیمات قابل تنظیم هستند، به این معنی که میتوانید تعداد دفعات ذخیره Redis دادهها را بر اساس نیازهای برنامه خود تنظیم کنید.
ساختار داده
ما اغلب در مورد آن بیشتر یاد می گیریم ساختارها و الگوریتم های داده (DSA) نسبت به سایر موضوعات در علوم کامپیوتر، اما چرا تمرکز بر ساختارهای داده اینجا؟ Redis به شما امکان می دهد داده ها را به عنوان ذخیره کنید جفت های کلید-مقدار، که در آن مقدار می تواند انواع ساختارهای داده، از ساده باشد رشته ها و اعداد صحیح به موارد پیچیده تر مانند لیست ها، مجموعه ها، مجموعه های مرتب شده، و حتی هش.
این انعطاف پذیری در ساختارهای داده یکی از دلایل قدرتمند بودن Redis است. این به شما امکان می دهد انواع مختلف داده ها را بر اساس نیازهای خود به طور موثر مدیریت و دستکاری کنید.
دستورات برای شروع با
- SET: یک مقدار برای یک کلید تنظیم کنید.
SET mykey "Hello, World!"
- GET: مقدار یک کلید را بازیابی کنید.
GET mykey
DEL mykey
- EXPIRE: زمان انقضا را روی یک کلید تنظیم کنید.
EXPIRE mykey 60 # Key expires in 60 seconds
- HSET: یک فیلد را در هش تنظیم کنید (شبیه به شی).
HSET user:1000 name "Priya"
HSET user:1000 email "priya@example.com"
و خیلی بیشتر!
برای یک مرجع سریع در مورد دستورات Redis، برگه تقلب شروع سریع Redis را بررسی کنید.
مثال عملی
تصور کنید یک برنامه وب دارید که در آن کاربران اغلب از پایگاه داده محصول درخواست می کنند. پرس و جوهای مکرر برای یک محصول می تواند کند باشد و منابع را هدر دهد. در اینجا چگونه Redis می تواند کمک کند:
- تنظیم داده های محصول در Redis:
SET product:1234 "{ 'name': 'Laptop', 'price': 1000 }"
- Redis را قبل از جستجو در پایگاه داده بررسی کنید: قبل از ورود به پایگاه داده یک محصول، Redis را بررسی کنید تا ببینید آیا داده وجود دارد یا خیر.
GET product:1234
- استفاده از انقضا: برای جلوگیری از داده های قدیمی، زمان انقضا را روی داده های ذخیره شده تنظیم کنید.
EXPIRE product:1234 600
جمع بندی
Redis یک ابزار قدرتمند است که مدیریت سریع و انعطاف پذیر داده را با استفاده از ذخیره سازی در حافظه امکان پذیر می کند. با درک مفاهیم اصلی آن، می توانید از Redis برای بهبود عملکرد و مقیاس پذیری برنامه خود استفاده کنید.
در صورت تمایل تجربیات خود را با Redis یا هر نکته ای که دارید به اشتراک بگذارید!
طراحی مبارک! 😊💻