برای درک کاربرد گسترده ردیس (Redis)، با یک نگاه به مارکتهای فروش اپلیکیشنهای موبایل، به جذابیت و پرطرفدار بودن آنها پی میبریم. از طرفی دیگر، کسبوکارهای زیادی بهسمت انتقال تجارت خود به وبسایتها پیش میروند. تقاضای روزافزون برای اپلیکیشنها و اجرای سرویسهای آنلاین در سرور (Server Side)، نیازبه یک پایگاه داده پرسرعت و کارآمد را ضروری میکند. درست در همین نقطه، پایگاه داده ردیس به میان میآید؛ دیتابیسی پرقدرت با امکان پاسخگویی بسیار سریع به درخواستهای کلاینت و کاهش ترافیک دادهای در سرور. پس بیهیچ توضیح بیشتری، بهسراغ پاسخ «Redis چیست» میرویم.
Redis چیست؟

برای تشریح دقیق سوال «ردیس چیست»، سری به وبسایت رسمی آن با آدرس redis.io زدیم، در این وبسایت، پاسخ را به این شکل یافتیم:
“Redis” مخفف عبارت “Remote Dictionary Server” است. درواقع ردیس یک نوع ساختمانِ داده است که در حافظه RAM قرار گرفته و اطلاعات را بهصورت موقتی در خود ذخیره میکند.
ردیس دادهها را با سیستم Key-value نگه میدارد. بهلطف این ویژگی، پیچیدگی میان دادهها ایجاد نشده و در پی آن، دسترسی و بازیابی اطلاعات بسیار سادهتر خواهد شد.
Key-Value در ردیس چیست؟

Key-Value نوعی سرور یا محل ذخیرهسازی است که در آن، اطلاعات بهصورت جفتهای کلید (Key) و مقدار (Value) ذخیره میشوند. برای مثال، اگر من بگویم Name = Samira، کلید من Name و مقدار آن Samira خواهد بود.
در Redis هم اطلاعات بههمینشکل و در RAM ذخیره میشوند. بنابراین سرعت دسترسی به اطلاعات چندبرابر خواهد شد.
توجه: در ردیس هر رکورد یک عنوان و یک داده دارد.
بیشتر بخوانید: سیستم مدیریت پایگاه داده چیست؟ بررسی انواع DBMS
درک ردیس با یک مثال در دنیای واقعی
برای درک بهتر «Redis چیست»، یک مثال را مهمان ما باشید.
فرض کنید یک سایت فروش بلیط هواپیما داریم. روزانه هزاران کاربر وارد سایتمان شده و مبدا و مقصدشان را در فیلدهای مشخصشده جستوجو میکنند. وظیفه ما در این فرآیند، ارائه پاسخ به درخواستهای او در کوتاهترین زمان ممکن و در اختیار قرار دادن نتایج است.
اگر در این شرایط بخواهیم هربار به سرور وصل شده و از حافظه اصلی آن استفاده کنیم، متحمل دو چیز میشویم:
- افزایش زیاد هزینهها؛ چون باید RAM با ظرفیت بالاتری را برای سرورمان بخریم؛
- کاهش سرعت عمل سرور و پاسخدهی به درخواستها.
برای حل این مشکلات، از Redis بهعنوان پایگاه داده موقت استفاده میکنیم و اطلاعات پرکاربرد و پرتقاضا را داخل آن قرار میدهیم. بهاینشکل هم منابع کمتری از سرور درگیر میشوند و هم سریعتر پاسخ درخواست کاربر را میدهیم.
تفاوت Redis با MySQL، NoSQL و Microsoft SQL Server
در ادامه این بخش، مقایسهای بین Redis و چند پایگاه داده معروف ازجمله Microsoft SQL Server را در قالب جدول مشاهده خواهید کرد.
| ویژگی | Redis | NoSQL | MySQL | Microsoft SQL Server |
| مدل دادهای | – کلید-مقدار – پشتیبانیاز انواع ساختارهای دادهای – بدون نیاز به اسکیما | – پوشش انواع ساختارهای دادهای – مناسب دادههای بدون ساختار یا نیمه ساختاریافته | – سازماندهی دادهها در جداولی متشکلاز سطر و ستون – الزام به استفاده از اسکیما – مدیریت دادهها با کمک SQL | – جمعآوری دادهها در سطر و ستون – استفاده از SQL برای ویرایش دادهها |
| مکانیزم ذخیرهسازی | – ذخیره دادهها در RAM – افزایش ماندگاری دادهها با RDB و AOF | – فراهم کردن انواع مکانیزمهای ذخیرهسازی باتوجه به نوع پایگاه داده – امکان ذخیره در RAM و دیسک | – مبتنیبر دیسک – تضمین دوام دادهها با ACID | – مبتنیبر دیسک – تضمین دوام دادهها با گزارش تبادلات – پشتیبانیاز ACID |
| عملکرد | – بسیار مطلوب | – بالا و بهینه | – تاحدودی خوب | – خوب |
| کاربردها | – ذخیرهسازی فوری دادهها – تجزیهوتحلیلهای بلادرنگ – مدیریت Sessionها – مدیریت سیستمهای پیامرسانی Pub/Sub | – شبکههای اجتماعی – اپلیکیشنهای Big Data – انواع سیستم مدیریت محتوا | – کوئرینویسی پیچیده – پلتفرمهای تجارت الکترونیک – مدیریت دادههای ساختاریافته | – پلتفرمهای بزرگ و اپلیکیشنهای سازمانی – گزارشگیری وسیع |
| مقیاسپذیری | – افقی – از طریق خوشهبندی | – بالا – امکان مقیاسپذیری در گرههای متعدد بدون اعمال تغییرات در پیکربندی آنها | – عمودی با ارتقای سختافزار – افقی از طریق اشتراکگذاری | – بالا – مقیاسپذیری بهواسطه خوشهبندی و پارتیشنبندی |
بیشتر بخوانید: SQL Server چیست و برای چه کسانی مناسب است؟ بررسی مزایا و معایب
کاربرد Caching در Redis چیست؟

بهترین زمان استفاده از Caching، تصمیم برای کاهش مراجعهبه هارد دیسک است. در این سیستم، اطلاعات در حافظه موقت ذخیره شده و سرعت دسترسی به اطلاعات و بارگذاری آنها را افزایش میدهد.
به این ترتیب، بهجای مراجعه چندباره با هدف بازخوانی اطلاعات از سرورها، این اطلاعات یکبار دریافت شده و در قالب حافظه نهان یا “Cache” در ردیس قرار میگیرند.
نصب redis در ویندوز
برای نصب Redis در ویندوز، ازآنجاییکه نسخه رسمی برای این سیستم عامل ارائه نشده، روش پیشنهادی استفاده از Windows Subsystem for Linux (WSL) است. در این روش، ابتدا با اجرای فرمان «wsl –install» ویندوز خود را برای اجرای توزیعهای لینوکس فعال میکنید (نیازمند ویندوز ۱۰ نسخه ۲۰۰۴ یا بالاتر یا ویندوز ۱۱ است). سپس، با نصب توزیعهایی مانند Ubuntu و بهروزرسانی بستهها (با دستور sudo apt-get update)، میتوانید Redis را با دستور «sudo apt-get install redis-server» نصب نموده و سرویس آن را با «sudo service redis-server start» راهاندازی کنید.
این روش به شما امکان میدهد از یک محیط لینوکسی پایدار و بهروز که روی ویندوز اجرا میشود، بهره ببرید و عملکرد بهینه Redis را تجربه کنید. علاوهبر این، برخی توسعهدهندگان برای اهداف توسعه از Docker یا پورتهای غیررسمی مانند Memurai نیز استفاده میکنند؛ اما در محیطهای تولید، استفاده از WSL یا Docker توصیه میشود.
مزایای Redis چیست؟
استفاده از Redis با مزایای جالب و کارآمدی همراه است که در ادامه با هرکدام آشنا خواهید شد.
پشتیبانی از انواع دادههای جدید
- پشتیبانیاز انواع مختلف دادهها مانند String, Hash, List, Set و Sorted Set
- مناسب Caching, Counting, Queues و Pub and Sub
سرعت بالا
- نوشتهشده با زبان C و برخورداری از سرعت بسیار زیاد
ساختاری مشابه دیتابیس NoSQL
- دارای یک ساختمان داده در حافظه
- ذخیره دادهها با استفاده از حافظه تصادفی در RAM
بیشتر بخوانید: NoSQL چیست و کاربرد هایی دارد؟
کاهش هزینهها
- مصرف کمتر منابع
- عدم صرف هزینه برای تهیه زیرساختهای پرهزینه
- مناسب استفاده در خدمات رایانش ابری
پشتیبانی از زبانهای برنامهنویسی مختلف
- پشتیبانیاز زبانهای جاوااسکریپت، جاوا، Go، C، C++، C#، پایتون، Objective C و PHP
- منعطف و سازگار با قابلیتها و تکنولوژیهای جدید انواع زبانهای برنامهنویسی
انجام عملیات بهشکل Atomic
- امکان انجام تراکنشهای دادهای بهشکل Atomic و اجرای چند دستور در قالب یک عملیات واحد
دسترسیپذیری بالا
- پشتیبانیاز Master-Slave Replication
- فراهم کردن زمینه برای کپی دادهها در چند سرور
- دارای قابلیت Failover
سادگی در استفاده
- دارای رابط خط فرمان ساده و کتابخانههای کلاینت
- ادغام ساده API ردیس با انواع زبانهای برنامهنویسی
بیشتر بخوانید: کوبرنتیز چیست؟ هرآنچه باید درباره Kubernetes بدانید
سخن پایانی
محبوبیت ردیس بیدلیل نیست و ازآنجاییکه توسعهدهندگان بهدنبال ابزارهایی برای افزایش سرعت دسترسی به اطلاعات هستند، این فناوری پاسخ خوبی به نیاز توسعهدهندگان داده است. این پایگاه داده با ارائه مزایایی همچون ساختاری مشابهبا NoSQL، پشتیبانیاز زبانهای برنامهنویسی مختلف و دسترسیپذیری بالا، روزبهروز تقاضای بیشتری را پیدا میکند.
در پایان، میخواهیم از شما تقاضای بیان تجربهتان را داشته باشیم. پس اگر درباره این پایگاه داده سوال یا تجربهای دارید، در قسمت نظرات همین مقاله آن را با ما و سایر کاربران بهاشتراک بگذارید.
سوالات متداول
- کاربرد ردیس چیست؟
Redis یک پایگاه داده موقت است که اطلاعات پرتقاضا را ثبت میکند. بههمیندلیل، منابع کمتری را از سرور درگیر کرده و پاسخ درخواست کاربر را در زمان بسیار کوتاهی بهدستش میرساند.
- تفاوت Redis با دیگر پایگاه دادهها چیست؟
در ردیس خبری از ستونها، ردیفها، جداول و توابع نیست. درعوض، ردیس از ساختمان دادههایی مثل String، Lists ،Sets ،Hashes و غیره برای مرتب کردن اطلاعات استفاده میکند.
- تعامل با ردیس چگونه است؟
تعامل با ردیس از طریق خط فرمان انجام میشود.
سلام من به تازگی با Redis آشنا شدم اگر امکانش هست، یک راهنمایی در مورد بهترین روشهای بهینهسازی Redis برای پروژههای بزرگ هم بگید
سلام؛ برای بهینهسازی Redis در پروژههای بزرگ، مهمترین نکات شامل استفاده از کلیدهای کوتاه و معنادار برای کاهش حافظه، تنظیم TTL (زمان انقضا) برای دادههای موقت، استفاده از Pipeline برای کاهش تعداد درخواستهای شبکه، فعالسازی Persistence مناسب (RDB یا AOF) بر اساس نیاز، و مانیتورینگ مداوم با ابزارهایی مثل Redis Monitor یا RedisInsight برای شناسایی گلوگاهها است؛ همچنین، در صورت نیاز به مقیاسپذیری، استفاده از Redis Cluster را فراموش نکنید.
سلام خسته نباشید
برای پروژههای بزرگ، استفاده از Redis به عنوان دیتابیس اصلی رو توصیه میکنید یا بهتر فقط به عنوان کش استفاده کرد؟
سلام؛ برای بهینهسازی Redis در پروژههای بزرگ، مهمترین نکات شامل استفاده از کلیدهای کوتاه و معنادار برای کاهش حافظه، تنظیم TTL (زمان انقضا) برای دادههای موقت، استفاده از Pipeline برای کاهش تعداد درخواستهای شبکه، فعالسازی Persistence مناسب (RDB یا AOF) بر اساس نیاز، و مانیتورینگ مداوم با ابزارهایی مثل Redis Monitor یا RedisInsight برای شناسایی گلوگاهها است؛ همچنین، در صورت نیاز به مقیاسپذیری، استفاده از Redis Cluster را فراموش نکنید.
سلام وقتتون بخیر
اول از همه خواستم بابت مقاله بسیار خوبی که ارائه کردید تشکر کنم
در ادامه تجربه ای دارم که میخواستم باهاتون به اشتراک بذارم شاید بدرد کسی بخوره (پیشاپیش از اینکه به زبان عامیانه تایپ میکنم عذرخواهی میکنم)
توی یکی پروژه ها که بیش از ۱۴۰ تا جدول توی دیتابیس داشت و برای هر کدوم از جداول باید سطح دسترسی برای مشاهده، ایجاد و ویرایش آن تعریف میشد و ادمین سایت میتوانست برای هر کاربر یک، دو یا هر سه سطح دسترسی را باز کند یا ببند، به مشکل بر خوردیم، از اونجایی که مدیر پروژه هم خودم بودم خیلی فکرم رو مشغول کرده بود
مشکل هم این بود که وقتی به یک کاربر بیش از (حدوداً) ۱۰۷ رول داده میشد، تعداد کوکیها زیاد میشد و دیگه کاربر نمیتونست از سایت استفاده کنه و باید کاملاً کوکی هاش رو پاک میکرد، از اونجایی که این پروژه بالای ۴۰۰ تا رول داشت واقعاً نمیدونستم چیکارش باید بکنم
با مشورت یکی از دوستان که از ردیس استفاده کرده بود خوشبختانه این مشکل رو حل کردیم و خیلی خوشحالم که با خوندن این مقاله هم تونستم کاملاً از چیزی که دارم استفاده میکنم مطلع بشم و بخوبی بشناسمش
بازم ممنونم از تهیه مقاله خوبتون
شاد باشید
سلام و درود بر شما
از اینکه تجربتان در کار با ردیس را با ما به اشتراک گذاشته اید سپاسگزاریم
سلام . من هم در پروژهای زیادی از redis استفاده کردم . هم در سرورهای بانکی و هم وزارتخانه ها ،فناوری خوبی هست وهم سرعت بالایی دارد و فقط به درد اطلاعات موقت میخوره .
سلام، ممنون از اینکه تجربهتون رو به اشتراک گذاشتید.
دقیقاً همینطوره، Redis به خاطر ساختار in-memory بودنش سرعت فوقالعادهای داره و برای کش کردن دادهها، صفهای پیام، ذخیرهسازی sessionها و دادههای موقتی بسیار کاربردیه.
البته با وجود پشتیبانی از persistence، همچنان برای اطلاعات حساس یا بلندمدت توصیه نمیشه مگر اینکه با ترکیب مناسبی از تنظیمات snapshot و AOF استفاده بشه. استفاده از Redis در پروژههای بزرگ مثل سرورهای بانکی نشوندهندهی انعطافپذیری و قدرت بالاش هست.
بسیار عالی و کاربری خدا حفظتون کنه
سلام و وقت بخیر
ممنون از لطف شما و وقتی که برای خوندن گذاشتید