برنامه نویسی

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

احتمالاً هنگام یادگیری طراحی سیستم بارها با کلمه Redis مواجه شده اید. این آموزش به شما درک بهتری (امیدوارم) از آنچه Redis از منظر مبتدی است، می دهد، و در آینده، ما عمیق تر به نمونه های واقعی از نحوه پیاده سازی Redis در برنامه های خود خواهیم پرداخت.

Redis چیست؟

تصویر ردیس

Redis یک سرور ساختار داده یا ذخیره‌سازی داده تک رشته‌ای و درون حافظه است. در مقایسه با پایگاه داده های سنتی فوق العاده سریع است زیرا در آن کار می کند حافظه (RAM) به جای ذخیره سازی دیسک.

اینهمه اصطلاح؟ جای نگرانی نیست! بیایید آن را تجزیه کنیم و هر یک را درک کنیم:


تک رشته ای

تک رشته

Redis تمام درخواست ها را در یک رشته پردازش می کند. در حالی که این ممکن است مانند یک گلوگاه به نظر برسد، اما در واقع یک انتخاب طراحی کاملاً فکر شده است که سادگی و کارایی را تضمین می کند. Redis با استفاده از مکانیزمی به نام به این کارایی دست می یابد I/O Multiplexing.

درک مولتی پلکس I/O با آنالوگ

گارسونی را در یک رستوران شلوغ تصور کنید که در آن مشتریان برای سفارش دادن به صف ایستاده اند. اگر پیشخدمت هر بار به یک مشتری رسیدگی می کند – منتظر می ماند تا آنها منو را مرور کنند و تصمیم بگیرند که چه چیزی را سفارش دهند – سایر مشتریان باید بیشتر منتظر بمانند.

اکنون، بیایید یک بهبود ایجاد کنیم: پیشخدمت منوها را در هر میز قرار می دهد تا مشتریان بتوانند از قبل در مورد سفارشات خود تصمیم بگیرند. گارسون به جای منتظر ماندن برای آماده شدن هر مشتری، بلافاصله از کسانی که آماده هستند سفارش می گیرد و زمان انتظار را به میزان قابل توجهی کاهش می دهد.

این شبیه به نحوه عملکرد I/O Multiplexing در Redis است.

  • سرور Redis به تمام درخواست های دریافتی گوش می دهد.
  • برخی از مشتریان ممکن است بیکار باشند (مثلاً، دستورات را ارسال نمی کنند).
  • Redis درخواست هایی را که آماده رسیدگی هستند پردازش می کند و از عملیات روان و سریع اطمینان می دهد.

با انجام این کار، Redis عملکرد را بهینه می کند و بدون نیاز به چندین رشته یا مکانیسم های قفل پیچیده، کارها را ساده نگه می دارد.


در حافظه

تصویر db Im-Memory

ردیس یک است در حافظه ذخیره داده، یعنی تمام داده های خود را در آن نگه می دارد RAM برای دسترسی سریع این طراحی در حافظه به Redis اجازه می دهد تا برای عملیات خواندن و نوشتن بسیار سریع باشد، زیرا دسترسی به داده ها از RAM بسیار سریعتر از ذخیره سازی دیسک است.

با این حال، از آنجایی که RAM فرار است، به این معنی که در صورت از کار افتادن سرور، داده ها از بین می روند، Redis مکانیسم هایی را برای اطمینان از تداوم داده ها حتی در صورت خرابی های غیرمنتظره فراهم می کند. Redis به صورت دوره ای داده های خود را با استفاده از دو مکانیسم روی دیسک ذخیره می کند:

  1. عکس فوری: Redis مجموعه داده را در بازه های زمانی مشخص در دیسک ذخیره می کند و یک عکس لحظه به لحظه از داده ها ایجاد می کند. به طور پیش فرض، Redis این عکس فوری را روی دیسک می نویسد:

    • هر 900 ثانیه (15 دقیقه) اگر حداقل یک کلید تغییر کرده باشد.
    • هر 300 ثانیه (5 دقیقه) اگر حداقل 100 کلید تغییر کرده باشد. (این داده ها از منابعی مانند Google جمع آوری شده است، اما همیشه خوب است که اسناد Redis را برای دقت بررسی کنید.)
  2. فایل فقط پیوست (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 یا هر نکته ای که دارید به اشتراک بگذارید!

طراحی مبارک! 😊💻

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا