همه چیز درباره ی Redis
من ارسلان میربزرگی، در این مقاله قصد دارم تا درباره Redis و کارایی آن با شما صحبت کنم. اگر App store، Gooogle play، مایکت، بازار و سایر فروشگاه های اپ را دیده باشید، پر از برنامههایی هستند که از Redis استفاده میکنند. در کنار این موارد وب سایتهای زیادی نیز وجود دارند که هر کدام به نحوی با Redis در ارتباط هستند و از آن استفاده میکنند.
انتقال بسیاری از کسب و کارها به فضای مجازی و ایجاد وب سایتهای مختلف، باعث شده است تا به برنامههای سمت سرور (Server Side)، فشار بیشتری آورده شود و همینطور این برنامهها در نظر مخاطبان، محبوبیت بیشتری را داشته باشند. مراجعات متعدد روزانه به این وب سایتها، عموما بالا است و اگر این وب سایتها، از سمت سرور دارای پشتیبانی قوی و کارآمدی نباشند، به راحتی دچار اختلال در پاسخگویی و حجم عظیمی از ترافیک داده خواهند شد. دیتابیسهای NoSQL به دلیل ویژگیهای خاصی که دارند، به خوبی میتوانند در این نوع از وب سایتها، عمل کنند. یکی از محبوب ترین دیتابیسهای NoSQL ، Redis است.

اگر به سایت https://redis.io سر بزنید، Redis ( مخفف Remote Dictionary Server)را به عنوان نوعی دیتابیس که از RAM برای ذخیره موقت اطلاعات استفاده میکند، معرفی کرده است. در Redis اطلاعات بر اساس ارزش کلیدی یا همان Key-value ذخیره می کند. به دلیل همین ویژگی نیز، دادهها به صورت منظم دسته بندی شده و بازیابی آنها بسیار آسانتر خواهد بود.
سیستم Key-Value
Key-Value را میتوان به عنوان سروی برای ذخیره اطلاعات بر اساس جفت کلید یا Key و مقدار یا Value در نظر گرفت. مثلا اگر دادهای به صورت Age = 16 باشد، کلید ما Age و مقدار آن 16 است. در Redis اطلاعات به صورت Key-Value دخیره میشوند و بنابراین Redis را نوعی دیتابیس Key-Value نیز مینامند.
کاربرد Redis
اگر بخواهیم در مورد کاربرد Redis بنویسیم، بهتر است با یک مثال شروع کنیم. اگر بخواهیم سایتی را برای فروش بلیط هواپیما داشته باشیم. در این سایت روزانه صدها درخواست مختلف ثبت خواهد شد و مشتریان باید بلافاصله پس از انتخاب مقصد و مبدا، وارد مرحله بعدی شده و معطل نمانند. در این حالت اگر برای تک تک درخواستها، نیاز به اتصال به سرور داشته باشیم، قطعا با افت سرعت مواجه خواهیم شد. از طرفی اگر بخواهیم این افت سرعت را نداشته باشیم باید میزان RAM بالاتری را تهیه کنیم که این امر هزینه زیادی را در پی خواهد داشت. در این حالت، بهترین و کم هزینه ترین راه حل، استفاده از Redis است. این دیتابیس، اطلاعات را به صورت موقت در خود ذخیره میکند و از این رو بار کمتری به سمت سرور اصلی خواهد رفت و پاسخگویی نیز، سرعت بالاتری خواهد داشت. Redis از دادههای مختلفی مانند List، Set، String، Hash و Sorted Set پشتیبانی میکند. در Redis تمامی اطلاعات در حافظه اصلی ذخیره میشود که این امر باعث افزایش قابل ملاحظه سرعت پاسخگویی خواهد شد. از این رو، Redis برای Pub and Sub، Queues، Caching و Counting، بسیار مناسب است.
Redis با سایر دیتابیس ها تفاوتی دارد؟
اگر بخواهیم این تکنولوژی را با انواع دیتابیس هایی مانند Oracle یا دیتابیس MySQL مقایسه کنیم، باید بگوییم که Redis برخلاف این دو دیتابیس، فاقد هر گونه ردیف، جدول، تابع، ستون و هر چیز دیگری است که استفاده از این دو دیتابیس را پیچیده میکند، است. همچنین در Redis ، هیچ کدام از دستورات Select ، Delete، Update و …. نیز وجود ندارد و ارتباط با آن از طریق ارسال فرمانهای خاصی انجام میشود.
در عوض، ردیس از ساختمان دادههایی مثل String، Lists ،Sets ،Hashes و …، برای مرتب کردن اطلاعات استفاده میکند. در ضمن بد نیست بدانید که تعامل با ردیس از طریق فرمان انجام میشود. لیست کامل این فرمانها را میتوانید در مستندات ردیس ببینید.

کاربرد Caching در Redis
اگر بخواهیم میزان دسترسی به هارد دیسک ما کاهش یابد، میتوانیم از Caching استفاده کنیم. با Caching ، تمامی اطلاعات در یک حافظه موقت ذخیره سازی میشوند. این عمل باعث افزایش سرعت فراخوانی اطلاعات و یا آپلود آنها خواهد شد. در واقع، اطلاعات صرفا یک مرتبه دریافت میشوند و در حافظه پنهان یا Caching نگهداری می شوند. این کار مزیتهایی مانند کاهش زمان و افزایش سرعت و صرفه جویی در منابع را خواهد داشت اما از طرف دیگر، به علت اینکه حافظه Cache نوعی حافظه موقت است، Redis نیز که از این حافظه استفاده میکند نیز، موقت است و نمیتوان به آن به عنوان دیتابیسی برای ذخیره دائمی اطلاعات نگاه کرد. از Redis بیشتر برای ذخیره دیتاهای مربوط به لاگین کاربران، ذخیره کوکی، اشتراک گذاری داده ها و همینطور برای Session استفاده می شود. تمامی این موارد، نیازی به ذخیره دائمی ندارند و بنابراین برای ذخیره سازی آنها می توان از Redis استفاده کرد.

مزیت های استفاده از Redis
استفاده از این تکنولوژی مزیتهایی مانند سرعت بالا، ساختار مشابه NoSQL، کاهش چشمگیر هزینه و پشتیبانی از بسیاری از زبانهای برنامه نویسی را دارد که در ادامه در مورد هر یک توضیح خواهیم داد.
سرعت بالا
امروزه اگر در دنیای IT فعال باشید و سرعت عمل کافی را نداشته باشید، قادر به رقابت با بسیاری از رقبای خود نخواهید بود. Redis یکی از دیتابیسهایی است که نقش بسیار پر رنگی در افزایش سرعت فناوریهایی که از این دیتابیس برای ذخیره داده های خود استفاده می کنند، دارد
ساختار مشابه NoSQL
Redis از لحاظ ساختاری، مشابه NoSQL است. در نتیجه کاربران، بر مبنای محبوبیتی که NoSQL داشت، از ردیس نیز، استقبال بسیار خوبی داشتند. این دیتابیس، علاوه بر ویژگیهای معمولی که NoSQL وجود دارد، توانایی ذخیره دادهها توسط یک حافظه تصادفی در RAM را نیز دارد. به همین دلایل، شرکتهای بزرگ و فعال در حوزه فناوری، بیش از پیش به سمت Redis جذب میشوند. از این وب سایتهای مطرح میتوان به Craigslist، Weibo، Diggs، StackOverflow، Pinterest، Snapchat و FlickR اشاره کنیم.
کاهش چشمگیر هزینه
ردیس به دلیل درگیر کردن کمتر منابع در سمت سرور، نقش عمدهای در کاهش هزینههای نهایی دارد. اگر شما علاوه بر این دیتابیس، از فضای ابری نیز استفاده کنید، این کاهش هزینه بسیار بیشتر خواهد شد.
پشتیبانی از زبانهای برنامهنویسی مختلف
پشتیبانی از زبانهای برنامه نویسی متعدد، برای یک دیتابیس، یک ویژگی مثبت محسوب میشود. که Redis دارای این ویژگی نیز هست. زبانهایی که توسط آن پشتیبانی میشوند شامل جاوا، جاوا اسکریپت، C ، C++ ، پایتون، PHP، Objective-C، Go است. دامنه وسیع زبانهای پشتیبانی شده توسط Redis ، باعث شده است تا تمامی افرادی که با هر کدام از این زبانهای برنامه نویسی، آشنایی دارند، بتوانند به راحتی با Redis نیز کار کنند.

و در آخر
به عنوان حسن ختامی بر این مقاله، باید بگوییم که در کل، Redis به دلیل دارا بودن ابزارهایی که باعث افزایش سرعت در سایتها و برنامه میشود، از محبوبیت زیادی در بین Developer ها برخوردار است. از طرفی، راه اندازی و نصب آن آسان است و این موضوع نیز در افزایش محبوبیت آن نقش دارد.
عالی، ممنون