فهرست محتوا
- 1 ردیس چیست؟
- 2 ردیس چگونه کار میکند؟
- 3 ردیس بیشتر مناسب چه نوع پلتفرمهایی است؟
- 4 کدام وبسایتها نباید از ردیس استفاده کنند؟
- 5 آشنایی با مهمترین ماژولهای ردیس
- 6 ردیس از چه قسمتهایی تشکیل شده است؟
- 7 ردیس دادههایی را به چه شکلی ذخیره میکند؟
- 8 مزایای استفاده از ردیس
- 9 معایب ردیس
- 10 ردیس در چه مواردی کاربرد دارد؟
- 11 مونگودیبی چیست؟ مقایسه ردیس و مونگودیبی
- 12 سؤالات متداول
امروزه وبسایتها با توجه به افزایش تعداد کاربران اینترنت بیشازپیش نیاز به ابزاری دارند که بتواند سرعت بارگذاری صفحات وب را کاهش دهد. یکی از این ابزارها کش یا کشینگ نام دارد که وظیفه آن ذخیرهسازی موقت دادهها و فایلها میباشد که این امر باعث کاهش و در نتیجه بهبود بازدیدکنندگان وبسایتها میشود. نرمافزارهای کشینگ مختلفی در بازار وجود دارد که از بین آنها میتوان به سه ابزار حرفهای ممکشد، ردیس و وارنیش اشاره کرد که هر کدام دارای ویژگیها، مزایا، معایب و کاربردهای مخصوصبهخود هستند. ما پیشتر در دو مقاله جداگانه به بررسی ممکشد و وارنیش پرداختیم و امروز نیز میخواهیم شما را با نرمافزار کشینگ ردیس آشنا کنیم. ردیس به صورت خلاصه نوعی پلتفرم ذخیرهسازی است که به عنوان پایگاهداده و نرمافزار کشینگ مورد استفاده قرار میگیرد.
ردیس چیست؟
ردیس یا Redis (مخفف Remote Dictionary Server) نوعی سیستم ذخیرهسازی سرور پخش ویدئو و استفاده کرد. ردیس اولین بار در سال ۲۰۰۹ توسط Salvatore Sanfilippo ایجاد شد و امروزه میلیونها نفر از سرتاسر دنیا از آن استفاده میکنند. این سیستم کشینگ از سرعت بسیار بالایی برخوردار بوده و از ۵۰ زبان برنامهنویسی مختلف پشتیبانی میکند. ردیس میتواند در کسری از ثانیه میلیونها درخواست را مدیریت کند و بیشتر مناسب صنایع، فناوریها و مواردی مانند صنعت بازی، فناوری Ad-Tech، سرویسهای مالی، و شبکههای اجتماعی است که در آنها عامل زمان از اهمیت بسیاری بالایی برخوردار است. ردیس ۵ سال متوالی است که توسط توسعهدهندگان به عنوان محبوبترین پایگاهداده شناخته میشود زیرا این سیستم کشینگ حرفهای دارای عملکرد بسیار خوبی بوده و استفاده از آن نیز بسیار ساده است. با این حال ردیس فاقد برخی از ویژگیهای پایگاههای داده سنتی مانند MySQL و MongoDB است و بنابراین قبل از استفاده از آن باید با نیازهای وبسایت یا اپلیکیشن خود و همچنین تمام ویژگیها و مزایا و معایب ردیس آشنا شوید. امروزه شرکتهای مختلفی از ردیس استفاده میکنند که از میان مهمترین آنها میتوان به توئیتر، اوبر و پینترست اشاره کرد که این موضوع نشاندهنده قدرت و محبوبیت بالای این سیستم ذخیرهسازی حرفهای است. ردیس دارای دو نسخه رایگان و پولی است که نسخه پولی آن دارای یکسری امکانات و قابلیتهای اضافه است.
مبتنی بر کلید- (key-Value) NoSQL است که دادهها را بر روی حافظه خود ذخیره کرده و میتوان از آن به عنوان پایگاهداده، حافظه کش،ردیس چگونه کار میکند؟
ما برای استفاده از ردیس باید در ابتدا آن را از طریق صفحه دانلود ردیس و یا یکی از ابزارهای مدیریت پکیج لینوکس ( ، و ) دریافت کرده و سپس بر روی سرور خود نصب و فعالسازی کنیم. ردیس را میتوان بر روی سیستمعاملهای لینوکس (اوبونتو، کالی و …)، مکاواس و ویندوز نصب کرد اما با این حال نسخه ویندوز آن عملکرد چندان خوبی ندارد. وقتی کاربری از طریق درخواستی را برای دریافت محتوای مورد نظر خود به سمت سرور ردیس میفرستد، ردیس آن را مورد پردازش قرار داده و سپس در صورت موجود بودن محتوای مورد نیاز کاربر در حافظه RAM (کش هیت)، آن را به سمت کلاینت میفرستد. اگر هم موجود نباشد (کش میس)، کلاینت آن را از منبع اصلی (پایگاهداده و …) گرفته و برای استفاده در آینده در سرور ردیس ذخیره میکند. ردیس یک سیستم کشینگ In-Memory است و در نتیجه به جای ذخیرهسازی دادهها بر روی هارد دیسک و یا SSD، آنها را بر روی حافظه RAM خود ذخیره میکند که این امر باعث کاهش لتنسی، افزایش سرعت تحویل محتوا به کلاینتها و همچنین کاهش فشار وارده بر سرورها و پایگاههای داده میشود.
دادهها در ردیس بر اساس مدل Key-Value (کلید-مقدار) ردوبدل و ذخیره میشوند و بنابراین برای هر داده یک
منحصربهفرد وجود دارد. ما میتوانیم مانند سایر سیستمهای کشینگ در ردیس نیز از قابلیت TTL استفاده کنیم. TTL این امکان را به ما میدهد تا برای زمان انقضاء دادهها تاریخ تعیین کنیم. به عنوان مثال اگر TTL دادهای ۱۰ روز است، آن داده پس از گذشت ۱۰ روز از زمان ذخیرهسازی از حافظه RAM ردیس حذف خواهد شد. ردیس از قدرتمند استفاده میکند که این امکان را به آن میدهد تا عملیاتهای مختلفی را به صورت ترکیبی و با سرعت بسیار بالایی اجرا کند. ردیس برای حذف کردن دادهها نیز از الگوریتمهای کشینگ LRU و LFU استفاده میکند. در نوع LRU وقتی حافظه RAM پر میشود، ردیس دادههایی که اخیرا کمترین استفاده را داشتهاند را حذف میکند و در الگوریتم LFU نیز دادههایی حذف میشوند که در کل کمتر مورد استفاده قرار میگیرند (به عنوان مثال سالی ۵ یا ۶ بار).مراحل کار ردیس
حالت ذخیرهسازی دادهها
۱. ارسال درخواست به ردیس
کاربر از طریق کلاینت (مرورگر، اپلیکیشن، نرمافزار، سرویس آنلاین و …) با سرور ردیس ارتباط برقرار کرده و دستور Set را به همراه یک جفت کلید-مقدار به سمت آن ارسال میکند. کلیدها معمولا به شکل
بوده و مقادیر نیز شامل دادههایی با فرمتهای مختلف (فهرست، مجموعه، هش و …) میشوند.۲. ذخیرهسازی دادهها
سرور موارد دریافتی را مورد پردازش قرار داده و در صورتی که جفت کلید-مقدار ارسالی موجود نباشد، آنها را در حافظه RAM خود ذخیره میکند. اگر هم دادهها از قبل در سرور موجود باشند، در این صورت ردیس آنها را بهروزرسانی میکند.
حالت دریافت دادهها
در این حالت دو سناریوی کش هیت و کش میس اتفاق میافتد:
حالت کش هیت
۱. ارسال درخواست به ردیس
کاربر از طریق کلاینت خود با سرور ردیس ارتباط برقرار کرده و این بار دستور Get را به همراه کلیدی که به دادههای درخواستی مرتبط هستند، به سمت سرور ردیس ارسال میکند.
۲. دریافت دادهها
سرور ردیس کلید دریافتی را با کلید موجود در حافظه RAM انطباق داده و پس از پیدا کردن دادههای مرتبط با کلید، آنها را به سمت کلاینت میفرستد.
حالت کش میس
۱. ارسال درخواست به ردیس
کاربر به مانند حالت کش هیت، درخواستی را به همراه یک کلید به سمت سرور میفرستد.
۲. بررسی حافظه
سرور ردیس حافظه RAM را مورد بررسی قرار میدهد اما کلید ارسالی و در نتیجه دادههای درخواستی در آن موجود نیست.
۳. دریافت دادهها از منبع اصلی
کلاینت به دلیل موجود نبودن دادهها در سرور ردیس، آنها را به صورت مستقیم از پایگاهداده دریافت کرده و به منظور استفاده در آینده در سرور ردیس ذخیره میکند.
ردیس بیشتر مناسب چه نوع پلتفرمهایی است؟
- وبسایتهای فروشگاهی و پلتفرمهای
- پلتفرمهای شبکههای اجتماعی (فیسبوک، توئیتر و …)
- سایتهای خبری و بازیهای آنلاین
- وبسایتها با و
- سایتهای پخش ویدئو (یوتوب، نتفلیکس و …)
- سرویسهای مالی و پلتفرمهای
- اپلیکیشنهای پیامرسانی و مبتنی بر IoT
- موتورهای جستجو (گوگل، بینگ و …)
- سایتهای رزور هتل، بلیت هواپیما و …
- فرومها و پلتفرمهای آموزش آنلاین
- و بسیاری از موارد دیگر
کدام وبسایتها نباید از ردیس استفاده کنند؟
وبسایتهای با:
- بودجه پائین و دادههای حساس
- ترافیک و محتوای کم
آشنایی با مهمترین ماژولهای ردیس
ماژولهای ردیس هر کدام برای هدف خاصی ایجاد شدهاند که در ادامه با مهمترین آنها آشنا میشوید:
RediSearch
ماژولی است که امکان ایجاد Fuzzy ،Full-Text و تکنیک Secondary indexing را برای ردیس فراهم میکند که این قابلیتها باعث افزایش سرعت ایجاد کوئریها و همچنین کاهش زمان جستجوی دادهها، محتواهای اینترنتی و اسناد متنی میشود.
و اجرای قابلیتهای جستجویRedisTimeSeries
ماژول RedisTimeSeries در واقع پایگاهداده NoSQL است که امکان اضافه کردن دادههای مبتنی بر سیستم سری-زمان (TSDB) به ردیس را فراهم میکند و مناسب برای کار با فناوریها، قابلیتها و عملیاتهایی مانند اینترنت اشیاء، Telemetry، مانیتورینگ سیستم، آنالیز قیمتهای بازار بورس و … میباشد.
RedisJSON
این ماژول امکان استفاده از فایلها با فرمت JSON را برای ردیس فراهم میکند. کلاینتها با استفاده از RedisJSON میتوانند به آسانی مقادیر JSON را از پایگاهداده ردیس دریافت کرده و آنها را ذخیره و بهروزرسانی کنند.
RedisGears
موتوری در ردیس است که برای پردازش دادهها مورد استفاده قرار میگیرد و این امکان را به شما میدهد تا با نوشتن توابع مورد نظر خود، چگونگی تجزیهوتحلیل دادهها را مشخص کنید.
RedisAI
ماژولی است که برای اجرای مدلهای یادگیری عمیق و همچنین مدیریت دادههای مرتبط با آنها مورد استفاده قرار میگیرد.
،RedisGraph
این ماژول نوعی دیتابیس گراف قدرتمند است که به صورت خاص برای ردیس طراحی شده است. RedisGraph از زبان کوئری Cypher استفاده میکند که با کمک آن میتوان کوئریهایی را برای دریافت دادههای مبتنی بر گراف ایجاد کرد.
RedisBloom
این ماژول مجموعهای از ساختارهای داده احتمالی (Probabilistic Data) را به ردیس اضافه میکند و شامل ۵ قابلیت Top-K ،Count-min sketch,T-digest ، Bloom و Cuckoo میشود.
برای مشاهده سایر ماژولهای ردیس به صفحه رسمی ماژولهای ردیس مراجعه کنید.
ردیس از چه قسمتهایی تشکیل شده است؟
Redis Cluster
این امکان را به ما میدهد تا ردیس را به شکلی توزیعی پیادهسازی کرده و دادهها را میان سرورهای مختلف ردیس توزیع کنیم که این امر باعث افزایش
و و همچنین بهبود دسترسی کاربران در ردیس میشود.Sentinel Redis
Sentinel Redis نوعی سیستم توزیعی است که در صورت عدم استفاده ردیس از Redis Cluster، قابلیتهایی مانند دسترسی بالا (High-availability)، تکثیر دادهها، تابآوری خطا، Failover خودکار و مانیتورینگ را برای آن فراهم کرده و در صورت وجود هر نوع خطایی در ردیس، نوتیفیکیشنی را به فرد کاربر و یا ارسال میکند.
Redis Pub/Sub
Redis Pub/Sub نوعی قابلیت ارسال پیام مبتنی بر سازوکار Publish/Subscribe است که در آن ارسال کنندهها (Publishers) و دریافت کنندههای پیامها (Subscribers) میتوانند از طریق کانالهایی به آسانی با هم ارتباط برقرار کنند. در این فناوری، Publisherها معمولا به شکلی ناشناس در رابطه با موضوعی خاص پیامهایی را به کانالهای مختلفی ارسال میکنند و Subscriberها نیز پیامها را از طریق کانالهایی که در آنها عضو هستند، دریافت میکنند.
Redis Persistence
ردیس دادهها را به صورت پیشفرض بر روی حافظه RAM ذخیره میکند که این امر ممکن است باعث از دست رفتن آنها شود و بنابراین ما باید از قابلیت
استفاده کرده و به یکی از ۳ روش اسنپشاتینگ، AOF و یا ترکیبی از آنها، دادهها را بر روی هارد دیسک ذخیره کنیم. در حالت اسنپشاتینگ، ردیس به صورت دورهای نسخهای از دادهها را بر روی هارد دیسک یا SSD ذخیره کرده و بنابراین در صورت قطعی و یا بروز اختلال در سشنها میتوان آنها را به حالت عادی بازگرداند. AOF نیز سازوکاری است که با استفاده از آن میتوان تمام عملیاتهایی که بر روی پایگاهدادهها انجام میشوند را در قالب یک فایل لاگ بر روی دیسک ذخیره کرد. حالت سوم نیز همانطور که گفته شد ترکیبی از دو حالت اول است.RedisInsight
و ابزار مانیتورینگ متنباز ردیس است که از سیستمعاملهای مختلفی پشتیبانی کرده و با استفاده از آن میتوانید قسمتهای مختلف پایگاهداده خود را مدیریت کنید.تصویری از رابط گرافیکی RedisInsight:
ردیس دادههایی را به چه شکلی ذخیره میکند؟
ردیس بر خلاف سایر سیستمهای ذخیرهسازی مبتنی بر کلید-مقدار از ساختارهای داده مختلفی پشتیبانی میکند:
- مجموعه دستهبندی شده (Sorted Set): مجموعهای است که با توجه به یک مقدار دستهبندی میشود.
- جغرافیایی-فضایی (Geospatial): با استفاده از این ساختار میتوانید دادهها را بر اساس مختصات مکانی (طول و عرض جغرافیایی) ذخیره کرده و برای پیدا کردن آنها کوئریهایی را ایجاد کنید.
- هایپرلاگلاگ (HyperLoglog): نوعی ساختار داده احتمالی است که برای تخمین تعداد عناصر مجزای یک مجموعه داده مورد استفاده قرار میگیرد.
- بیتمپ (Bitmap): ساختار داده بیتمپ مقادیر باینری (۰ و ۱) را به شکلی مؤثر داخل رشتههای ردیس ذخیره میکند.
- بیتفیلد (Bitfield): ساختار دادهای است که برای ذخیرهسازی مجموعهای از بیتهایی که برای هدف خاصی ایجاد شدهاند، مورد استفاده قرار میگیرد.
- استریم (Stream): این امکان را به شما میدهد تا زنجیرهای از رویدادهها (Events) و پیامهای با برچسب زمانی (Timestamped) را ذخیرهسازی و مدیریت کنید.
- مجموعه (Set): مجموعهای نامنظم از رشتههای منحصربهفرد است که از عملیاتهای اجتماع (Intersection)، اشتراک (Union) و تفاضل (Difference) پشتیبانی میکند.
- فهرست (List): هر فهرست مجموعهای منظم از رشتهها میباشد که به ترتیب زمانی به آن اضافه شدهاند.
- رشته (String): دادههای متنی و باینری با حداکثر سایز ۵۱۲ مگابایت هستند.
- هش (Hash): نوعی ساختار داده است که برای ذخیرهسازی جفتهای فیلد-مقدار (Field-Value) مورد استفاده قرار میگیرد.
مزایای استفاده از ردیس
- عملکرد بینظیر و آسانی استفاده
- کاهش فشار وارده بر سرور، وبسرور و پایگاهداده
- پشتیبانی از زبانهای برنامهنویسی مختلف
- افزایش سرعت پلتفرمهای پخش ویدئو
- مجهز به ماژولهای مختلف
- لتنسی پائین و بالا
- سبکی و مقیاسپذیری آسان
- دسترسی بالا (HA)
- متنباز و رایگان بودن
- ماندگاری بالای دادهها
- پشتیبانی از فرمتهای داده مختلف
- جوامع کاربری فعال
معایب ردیس
- فاقد ابزارهای مدیریتی و مانیتورینگ حرفهای
- فاقد قابلیتهای امنیتی
- نیاز به داشتن حافظه RAM قوی
- مصرف بالای RAM
- پیچیده
- ناسازگاری با
- پیچیدگی ایجاد
- کوئریهای پیچیده
ردیس در چه مواردی کاربرد دارد؟
- اپلیکیشنهای موقعیت-محور
- چترومها و اپلیکیشنهای پیامرسان
- بازیهای آنلاین و شبکههای اجتماعی
- وبسایتهای فروشگاهی و پرترافیک
- یادگیری ماشینی و عمیق
- کشینگ و آنالیز دادهها
- مدیریت سشنها
مونگودیبی چیست؟ مقایسه ردیس و مونگودیبی
MongoDB یا مونگودیبی یک برنامه مدیریت پایگاهداده NoSQL متنباز و سندگرا (Document-Oriented) است که با استفاده از آن میتوانید با سرعت بالایی حجم سنگینی از دادهها را ذخیره کنید. این پایگاهداده بسیار انعطافپذیر بوده و این امکان را به شما میدهد تا دادهها را در قالب اسناد ذخیرهسازی، ردوبدل و دستکاری کنید.
ردیس | مونگودیبی | |
ساختار دادهها | رشته، فهرست، بیتمپ، رشته، هایپرلاگلاگ، استریم، هش و … | BSON |
محل ذخیرهسازی دادهها | بر روی حافظه RAM ذخیره میکند. | بر روی هارد دیسک و یا SSD ذخیره میکند. البته در نسخه پولی آن، دادهها در حافظه RAM ذخیره میشوند. |
چگونگی ذخیرهسازی دادهها | دادهها را بر اساس مدل کلید-مقدار ذخیره میکند. | دادهها را به صورت اسناد ذخیره میکند. |
کاربردها | کشینگ، آنالیز Real-Time، پیامرسانی مبتنی بر Pub/Sub، مدیریت سشن و … | آنالیز Real-Time، ذخیرهسازی دادهها، ایندکسینگ، لود بالانسینگ، ادغام دادهها و … |
ساختار کوئری | کوئری با قابلیتهای محدود | مجهز به زبان کوئری حرفهای مونگودیبی (MQL) است که با استفاده از آن میتوان انواع مختلفی از کوئریها را ایجاد کرد. |
مقایسپذیری | میزان مقیاسپذیری آن کمتر از مونگودیبی است. | مقیاسپذیری بالاتری را ارائه میدهد. |
ماندگارسازی دادهها | به ۳ صورت اسنپشاتینگ، AOF و ترکیبی انجام میشود. | با استفاده از سازوکارهای ژورنالینگ، Replication، کوبرنتیز و Wiredtiger انجام میشود. |
سرعت | ردیس دادهها را در حافظه RAM خود ذخیره میکند که این امر باعث میشود تا سرعت بالاتری از مونگودیبی داشته باشد. | کندتر از ردیس است زیرا دادهها را بر روی هارد دیسک یا SDD ذخیره میکند. |
قیمت | دارای دو نسخه رایگان و پولی است. نسخه پولی از ماهانه ۷ دلار شروع میشود. | دارای دو نسخه رایگان و پولی است. نسخه پولی از ماهانه ۵۷ دلار شروع میشود. |
میزان امنیت | امنیت آن کمتر از مونگودیبی است. | امنیت آن بیشتر از ردیس است. |
مصرف منابع | RAM بیشتر و CPU کمتری از مونگودیبی مصرف میکند. | معمولا نسبت به ردیس به RAM کمتر و CPU بیشتری نیاز دارد. |
سؤالات متداول
ردیس از چه زبانها و فریمورکهای برنامهنویسی پشتیبانی میکند؟
ردیس از زبانهای برنامهنویسی Python، جاوا، PHP، جاوا اسکریپت، Perl ،C، روبی ،#C++، C ، و همچنین فریمورکهایی مانند Laravel ،Ruby on Rails، جنگو و … پشتیبانی میکند.
آیا میتوان از ردیس به عنوان پایگاهداده استفاده کرد؟
بله این امر امکانپذیر است اما توجه داشته باشید که ردیس ممکن است فاقد برخی از ابزارها و قابلیتهای دیتابیسهای سنتی باشد. بنابراین به منظور بهبود عملکرد سرویس، وبسایت و یا اپلیکیشن خود بهتر است از ترکیب ردیس و پایگاههای دادهای مانند MariaDB استفاده کنید.
آیا ردیس با سایتهای وردپرسی سازگار است؟
شما میتوانید ردیس را با استفاده از افرونه Redis Object Cache با وبسایت وردپرسی خود ادغام کنید.
ردیس بیشتر مناسب چه نوع سرویسهای هاستینگی است؟
ردیس بر روی تمام سرویسهای هاستینگ (سرور مجازی، هاست ابری، سرور اختصاصی و …) قابل اجرا میباشد. با این حال ممکن است برخی از شرکتهای ارائهدهنده خدمات میزبانی از آن پشتیبانی نکنند. علاوهبراین، دارندگان هاستهای اشتراکی با توجه به کنترل پائینی که بر روی هاست خود دارند، ممکن است در نصب و یا پیکربندی ردیس دچار مشکل شوند.
آیا ردیس قابل هک شدن است؟
ردیس به مانند هر نرمافزار و سیستم کامپیوتری دیگری میتواند تحت حمله سایبری قرار بگیرد اما از روشهای مختلفی میتوان امنیت آن را افزایش داد که از بین آنها میتوان به استفاده از گذرواژههای ترکیبی و فایروال (WAF و …)، کنترل دسترسیها، رمزنگاری دادهها، مانیتورینگ و بهروزرسانی منظم نرمافزار، پیکربندی درست و گرفتن مشاوره از یک کارشناس امنیت سایبری اشاره کرد.
، نصب