راهنمای مطالعه:
# Redis چیست؟
قبل از اینکه شروع به یادگیری کنیم، باید بفهمیم که دیتابیس ردیس چیست؟ دیتابیس ردیس از نوع دیتابیسهای nosql بوده و اطلاعات را به شکل key:value ذخیره میکند. Nosql بودن ردیس به این معنی هست که دیگر خبری از زبان sql نبوده و ردیس زبان کوئری نویسی اختصاصی خودش را دارد. از زمانی که اولین نسخه ردیس معرفی شد، تا به الآن توجه بسیار زیادی را به خود جلب کرده و شرکتهای بزرگی درحال حاضر از این دیتابیس استفاده میکنند.
وبسایت رسمی redis، این دیتابیس را اینطور توصیف کرده است:
ردیس یک دیتابیس متن باز بوده که اطلاعات را در حافظه RAM ذخیره میکند. از ردیس میتوان به عنوان دیتابیس، حافظه cache و یا کارگزار پیام(message broker) استفاده کرد. ردیس ساختارهای داده مختلفی را ارائه میدهد و میتوانید هر نوع دادهای را در آن ذخیره کنید.
Redis زمان پاسخ دهی زیر میلی ثانیه را ارائه می دهد و میتواند میلیون ها درخواست را در ثانیه پاسخ دهد. امروزه Redis یکی از محبوب ترین موتورهای منبع باز امروزی است که توسط Stack Overflow برای پنج سال متوالی به عنوان "محبوب ترین" پایگاه داده نامگذاری شده است.
+ کارایی بسیار بالا
تمام دادههای Redis در حافظه RAM قرار میگیرند، که امکان دسترسی به دادهها با تأخیر کم و توان عملیاتی بالا را فراهم میکند. برخلاف پایگاههای داده سنتی، با ذخیرهسازی دادهها درون حافظه RAM دیگر نیازی به دسترسی به دیسک HDD نبوده و زمان دسترسی به اطلاعات را به میکروثانیه کاهش میدهد.
+ ساختارهای داده منعطف
برخلاف دیگر دیتابیسهای key:value که ساختارهای داده محدودی را پشتیبانی میکنند، ردیس دارای طیف گستردهای از ساختارهای داده است که میتواند پاسخگوی هر نیازی باشد. چند نمونه از ساختارهای داده ردیس عبارتند از:
- String - متن یا داده باینری تا اندازه 512 مگابایت
- List - مجموعه ای از رشته ها به ترتیبی که اضافه شدند
- Set - مجموعه ای نامرتب از رشته ها
- Hash - یک ساختار داده برای ذخیره لیستی از فیلدها و مقادیر
- Geospatial - یک ساختار داده برای ذخیره اطلاعات جغرافیایی
+ سادگی در یادگیری و استفاده
Redis شما را قادر می سازد تا کدهای پیچیده سنتی را با خطوط کمتر و ساده تر جایگزین کنید. با Redis، خطوط کد کمتری برای ذخیره، دسترسی و استفاده از داده ها در برنامه های خود می نویسید. در ردیس توسعهدهندگان از یک زبان کوئری ساده به جای زبان پیچیده sql استفاده میکنند.
+ منبع باز
Redis یک پروژه منبع باز است که توسط یک جامعه پر جنب و جوش از جمله AWS پشتیبانی می شود. هیچ فروشنده یا قفلی وجود ندارد زیرا Redis مبتنی بر استانداردهای توسعه نرم افزار آزاد است، از فرمت های داده آزاد پشتیبانی می کند و دارای مجموعه ای غنی از مشتریان است.
# منظور از پایگاه داده NoSQL چیست؟
nosql به دیتابیسهایی گفته میشود که در آنها زبان sql استفاده نمیشود. پایگاه های داده NoSQL برای مدل های داده خاص ساخته شده اند و به دلیل ساختار انعطاف پذیری که دارند برای ساخت برنامه های مدرن مانند شبکههای اجتماعی مناسب هستند. پایگاه های داده NoSQL به دلیل سهولت توسعه و عملکرد فوقالعاده در مقیاسبندی اطلاعات به طور گسترده ای شناخته شده اند.
پایگاه های داده NoSQL از انواع مختلف مدل های داده برای دسترسی و مدیریت اطلاعات استفاده می کنند. این نوع پایگاههای داده بهطور خاص برای برنامههایی بهینهسازی شدهاند که به حجم دادههای زیاد، تأخیر کم و مدلهای داده انعطافپذیر نیاز دارند، که با کاهش برخی از محدودیتهای سازگاری دادههای دیگر پایگاههای داده به دست میآیند.
# موارد استفاده از ردیس
+ حافظه cache
Redis یک انتخاب عالی برای پیادهسازی حافظه cache است. حافظه cache برای کاهش تأخیر دسترسی به دادهها، افزایش توان عملیاتی و کاهش بارگیری از پایگاه داده است. Redis میتواند اطلاعاتی را که اغلب درخواست میشود را در زمانهای زیر میلیثانیه پاسخ دهد. ذخیرهسازی نتایج کوئری در پایگاه داده، ذخیرهسازی مداوم session، ذخیرهسازی صفحه وب و ذخیره آبجکتهای پرکاربرد مانند تصاویر، فایلها و ابردادهها، همگی نمونههای محبوب ذخیرهسازی با Redis هستند.
+ کارگزار پیام
از ردیس میتوان به عنوان message broker نیز استفاده کرد. در این حالت ردیس با تشکیل چندین صف(queue) درخواستها را ذخیره کرده تا حجم کاری سرورها کاهش یابد. سپس درخواستهایی که در این صفها ذخیره شده بودند را به سرورها ارسال میکند. با اینکار در صورت بالا بودن حجم کاری سرورها، عملکرد برنامه متوقف نشده و کاربر میتواند به کار خودش ادامه دهد.
+ یادگیری ماشین
برنامههای کاربردی مبتنی بر دادههای مدرن، برای پردازش سریع حجم، تنوع و سرعت عظیم دادهها و خودکارسازی تصمیمگیری، به یادگیری ماشین نیاز دارند. برای موارد استفاده مانند تشخیص تقلب در بازی و خدمات مالی و مناقصه بلادرنگ در فناوری تبلیغات، توانایی پردازش دادههای زنده و تصمیمگیری در عرض دهها میلیثانیه از اهمیت بالایی برخوردار است. Redis به شما یک ذخیرهسازی سریع داده در حافظه میدهد تا مدلهای یادگیری ماشین را بسازید، آموزش دهید و به سرعت بکار ببرید.
# تفاوت redis و memcached چیست؟
Redis و Memcached هر دو ابزارهای منبع باز(open source) هستند که برای ذخیره سازی دادهها در حافظه استفاده میشوند. اگرچه استفاده از آنها آسان است و عملکرد بالایی دارند اما تفاوت های مهمی دارند که در زمان انتخاب باید به آنها توجه کنید. Memcached برای سادگی طراحی شده است در حالی که Redis مجموعه ای غنی از ویژگی ها را ارائه می دهد که آن را برای طیف وسیعی از موارد استفاده موثر می کند. هر دو آنها را میتوانید با پایگاه داده های رابطه ای یا key:value ترکیب کرده تا عملکرد بهتری را بدست آوردید.
# ویژگیهای پیشرفته ردیس
حالا که با ردیس آشنا شدید، وقت آن رسیده که به ویژگیهای پیشرفته ردیس نگاهی بیندازیم.
+ تکثیر اطلاعات(replication)
زمانی که اطلاعات را در یک سرور ذخیره میکنید، اگر اتفاقی برای آن سرور بیفتد ممکن است اطلاعات از دست بروند. ما برای جلوگیری از این اتفاق از تکنیکی به نام replication استفاده میکنیم. در این تکنیک داده ها در دو یا چند سرور برای جلوگیری از تلفات یا خرابی ها ذخیره می شوند. تکنیک replication همچنین باعث میشود فشار روی سرور کاهش پیدا کند چون درخواستهای کاربران بین چند سرور پخش میشود.
ردیس برای تکثیر اطلاعات از روشی به نام master/slave استفاده میکند. یکی از سرورها به عنوان ارباب یا master قرار میگیرد و بقیه سرورها نقش بَرده یا slave را دارند. تمام سرورهای slave به سرور master متصل هستند. ما اطلاعات را در سرور master مینویسیم که بعدا این تغییرات به سرورهای slave ارسال میشوند.
+ ماندگاری اطلاعات(persistence)
از آنجایی که ردیس یک دیتابیس in-memory است، اطلاعات را در حافظه یا RAM ذخیره میکند. اگر سرور از کار بیفتد، تمام داده های ذخیره شده از بین می رود. Redis دارای مکانیسم های پشتیبان گیری برای داده های روی دیسک است. به این ترتیب، هنگام راه اندازی مجدد سرور، داده ها از دیسک به حافظه بارگذاری می شوند. ردیس از دو گزینه برای ماندگاری اطلاعات استفاده میکند:
- روش RDB یا snapshotting: در این روش اطلاعات در فایلی به نام dumb.rdb ذخیره میشوند. دوام اطلاعات بستگی به دفعات ریختن داده ها به دیسک دارد.
- روش AOF: هر عملیات نوشتن(write) که توسط سرور دریافت میشود در یک فایل ذخیره میشود، بنابراین تمام دستورات موجود در فایل AOF هنگام راهاندازی مجدد دوباره اجرا میشوند.
+ خوشه بندی اطلاعات(cluster)
Redis Cluster یک نسخه ویژه از Redis است که به بهبود مقیاس پذیری و در دسترس بودن پایگاه داده Redis شما کمک می کند. هیچ کس نمی تواند میزان دقیق منابعی که پایگاه داده ردیس مصرف می کند را پیش بینی کند. این بدان معناست که توانایی مقیاسبندی موثر پایگاه داده ردیس در زمانی که سطح پردازش اطلاعات بالاست، بسیار مهم است. مقیاس پذیری با در دسترس بودن همراه است، معیاری که توانایی کاربران را برای دسترسی واقعی به پایگاه داده اندازه گیری می کند. Redis Cluster به بهبود مقیاس پذیری، در دسترس بودن و تحمل خطا در پایگاه داده های Redis، فراتر از نسخه پایه Redis کمک می کند.
+ ردیس sentinel
Redis Sentinel راه حلی با دسترسی بالا است که توسط Redis ارائه شده است و در کنار cluster استفاده میشود. در صورت خرابی در خوشه ردیس شما، Sentinel به طور خودکار نقطه شکست را تشخیص داده و خوشه را بدون دخالت انسانی به حالت پایدار برمیگرداند.
در سیستم sentinel ردیس، هر سرور slave مستقل از سرور master و دیگر سرورهای slave کار میکند. در معماری master/slave، سرور master برای نوشتن و سرور slave برای خواندن است. اگر سرور master دچار مشکل شود، یک سرور slave تبدیل به master جدید خواهد شد و توانایی خواندن و نوشتن را بدست میآورد. بقیه سرورهای slave به سرور master جدید متصل میشوند.
# چرا باید از ردیس استفاده کنیم؟
دلایل زیادی وجود دارد که ممکن است ردیس به شما پیشنهاد شود. استفاده از Redis مزایای زیادی دارد:
1. Redis اجازه می دهد تا جفت های کلید و مقدار را به اندازه 512 مگابایت ذخیره کنید، به این معنی که ردیس تا 1 گیگابایت داده را برای یک ورودی پشتیبانی می کند.
2. ردیس از مکانیزم هش خود به نام Redis Hashing استفاده می کند.
3. ردیس کلاینت هایی در تمام زبان های برنامه نویسی محبوب دارد. Redis دارای API های کلاینت است که در تمام زبان های محبوب مانند C، Ruby، Java، JavaScript و Python توسعه یافته اند.
4. ردیس یک سیستم پیام رسانی pub/sub ارائه می دهد. می توانید با استفاده از مکانیسم pub/sub و با استفاده از هر زبانی که انتخاب می کنید، یک برنامه پیام رسان با کارایی بالا ایجاد کنید.
5. ردیس اجازه می دهد تا حجم عظیمی از داده ها را به راحتی در حافظه پنهان خود وارد کنید. گاهی اوقات، لازم است که میلیون ها قطعه داده در حافظه پنهان در مدت زمان کوتاهی بارگذاری شود. این را می توان به راحتی با استفاده از درج انبوه انجام داد، ویژگی که توسط Redis پشتیبانی می شود.
6. ردیس را می توان در دستگاه های Raspberry Pi و ARM نصب کرد تا برنامه های مبتنی بر اینترنت اشیا را فعال کند.
7. ردیس یک پایگاه داده NoSql است. برای کار با Redis نیازی به یادگیری SQL ندارید.
ارسال نظر