Redis چیست؟ – هر آنچه باید برای شروع با ردیس بدانید
![Redis چیست؟ – هر آنچه باید برای شروع با ردیس بدانید](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/image-of-a-monitor-that-is-placed-on-a-wooden-table-and-the-word-redis-can-be-seen-in-the-center-of-the-screen.jpg.webp)
در سالهای اخیر Redis به عنوان یک ذخیرهساز ساختار داده متنباز با سرعت، تطبیقپذیری و مقیاسپذیری خود دنیای مدیریت دادهها را متحول کرده است. Redis با ذخیرهسازی دادهها در حافظه توانسته سرعت دسترسی و بازیابی اطلاعات را افزایش دهد. علاوه بر این، توانایی Redis در مدیریت انواع مختلف داده از رشتههای ساده گرفته تا مجموعههای مرتب شده همراه با زمان پاسخ سریع این ابزار را به سنگ بنای اصلی اپلیکیشنهایی تبدیل کرده است که نیازمند پردازش و ذخیرهسازی آنی دادهها هستند. بر همین اساس در مطلب پیشِ رو از مجله فرادرس به این سوال پاسخ داده خواهد شد که Redis چیست و چه کاربردهایی دارد.
با مطالعه این مطلب با Redis و نحوه کار آن آشنا خواهید شد و مهمترین ویژگیهای این ابزار کاربردی را خواهید شناخت. علاوه بر این، در ادامه همین مطلب نیز نحوه نصب، راهاندازی و کار با دستورات اصلی Redis آموزش داده شده است.
Redis چیست؟
در پاسخ به این سوال که Redis چیست باید عنوان کرد که Redis در حقیقت یک سرور ساختار داده قدرتمند است که به دلیل سرعت بالا، سادگی و انعطافپذیری شناخته میشود. به زبان ساده Redis ابزاری متنباز است که ساختار دادههای مختلف را درون حافظه ذخیره میکند.
Redis به دلیل توانایی بالا در ذخیره دادهها در حافظه و امکان عملیات «خواندن/نوشتن» (Read/Write) سریع در توسعه نرمافزار به عنوان پایگاه داده، حافظه پنهان و واسط ارسال پیام مورد استفاده قرار گیرد.
Redis اطلاعات را چگونه ذخیره میکند؟
Redis اطلاعات را در حافظه به صورت زوج مرتب «کلید-مقدار» (Key-Value) ذخیره میکند که روش ذخیرهسازی بسیار مرسوم و پرکاربردی در دنیای توسعه نرمافزار محسوب میشود. این ابزار پشتیبانی خوبی را برای طیف گستردهای از ساختار دادههای مختلف همچون رشتهها، هشها، لیستها، مجموعهها و مجموعههای مرتب شده ارائه میدهد و آنها را با استفاده از یک کلید منحصربهفرد در حافظه ذخیره میکند. نکته بسیار مهم در خصوص Redis این است که این ابزار برخلاف پایگاه دادههای مبتنی بر دیسک اطلاعات را در حافظه RAM ذخیره میکند.
![تصویری از حافظه رم در مادربورد - Redis چیست](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/image-of-the-RAM-memory-in-a-motherboard.jpg.webp)
آیا Redis یک پایگاه داده است؟
Redis کارکردهای مختلفی دارد و میتوان از آن به عنوان پایگاه داده، حافظه پنهان و واسط ارسال پیام استفاده کرد. این ابزار در بیشتر اوقات به عنوان یک پایگاه داده مورد استفاده قرار میگیرد. هر چند این ابزار تفاوت قابل توجهی با پایگاه دادههای سنتی مبتنی بر دیسک دارد. پایگاه دادههای سنتی مانند MySQL ،PostgreSQL یا MongoDB دادهها را روی دیسک ذخیره میکنند. در نقطه مقابل، Redis دادهها را در حافظه رم ذخیره میکند. قابلیت ذخیرهسازی دادهها بر روی حافظه RAM به Redis اجازه میدهد تا عملیات خواندن و نوشتن را با سرعت بسیار بیشتری نسبت به سایر پایگاه دادههای مبتنی بر دیسک ارائه دهد. پیشتر در مطلب زیر از مجله فرادرس انواع پایگاه داده و کاربردهایشان به طور کامل توضیح داده شده است.
شاید این سوال برای شما هم پیش آمده باشد که بالاخره Redis چیست و چه جایگاهی در دنیای برنامه نویسی دارد. در مجموع، Redis را به دلیل توانایی آن در ذخیره و بازیابی دادههای ساخت یافته میتوان یک پایگاه داده در نظر گرفت. هر چند این ابزار بیشتر به دلیل استفاده از فضای ذخیرهسازی در حافظه برای ارائه قابلیتهای پردازش سریع داده شناخته میشود. تطبیقپذیری و انعطافپذیری بالای Redis این ابزار را به گزینه محبوب برای انجام کارهایی همچون کش کردن اطلاعات، ذخیرهسازی «نِشستها» (Sessions)، تجزیه و تحلیل بِلادرنگ و صفبندی پیام تبدیل کرده است. علاوه بر این، Redis به طور گسترده در برنامههایی مورد استفاده قرار میگیرد که سرعت و عملکرد در آنها از اهمیت بالایی برخوردار است.
مهم ترین ویژگی های Redis چیست؟
Redis یک ابزار متنباز با قابلیت ذخیرهسازی دادهها به صورت زوج مرتب کلید و مقدار است. این ابزار با توجه به ذخیرهسازی داده در حافظه گزینه بسیار خوبی برای ساخت وب اپلیکیشنهای کاربردی و مقیاسپذیر با کارایی بالا محسوب میشود. از جمله مهمترین ویژگیهای این ابزار به موارد زیر میتوان اشاره کرد.
- ذخیرهسازی داده در حافظه
- ساختارهای داده
- اطمینان از ماندگاری اطلاعات
- سیستم پیام رسانی «انتشار/اشتراک» (Pub/Sub)
- کارایی بالا
در ادامه این بخش به شکل کاملتری به این سوال پاسخ داده خواهد شد که مهمترین ویژگیهای Redis چیست و هر کدام از این ویژگیها چگونه به توسعه دهندگان کمک میکند.
ذخیرهسازی داده در حافظه
مهمترین ویژگی Redis و وجه اصلی تمایز آن با سایر پایگاه دادههای سنتی توانایی آن در ذخیرهسازی اطلاعات در حافظه است. ذخیرهسازی اطلاعات در حافظه عملیات بازیابی و ذخیرهسازی دادهها را با سرعت بیشتری امکانپذیر میکند.
ساختارهای داده
Redis از ساختار دادههای متعددی همچون رشتهها، هشها، لیستها، مجموعهها و مجموعههای مرتب شده پشتیبانی میکند. این ساختارهای داده برای عملیات خواندن و نوشتن سریع بهینه شدهاند. بنابراین، Redis گزینهای ایدهآل برای توسعه آن دست از برنامههایی است که نیاز به دسترسی داده با تاخیر کم دارند.
![برنامه نویس نشسته پشت لپ تاپش در حال استفاده از ساختار داده های مختلف در برنامه نویسی](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/programmer-sitting-behind-her-laptop-and-using-different-data-structures-in-programming.jpg.webp)
اطمینان از ماندگاری اطلاعات
Redis یک پایگاه داده از نوع «در حافظه» (In-Memory) است. این بدین معنا است که دادهها به منظور دسترسی سریعتر در حافظه RAM ذخیره میشوند. با این حال، Redis قابلیتهایی نیز برای افزایش ماندگاری دادهها ارائه میدهد تا از دست رفتن دادهها ناشی از اتفاقاتی همچون راهاندازی مجدد یا خرابی سرور به حداقل برسد. از جمله قابلیتهای Redis برای اطمینان از ماندگاری اطلاعات به موارد زیر میتوان اشاره کرد.
- Snapshotting: پایگاه داده Redis به صورت دورهای یک تصویر لحظهای از مجموعه دادههای دیسک ذخیره میکند. به صورت پیشفرض، در صورت تغییر حداقل یک کلید دادهها توسط Redis هر ۵ دقیقه یکبار در دیسک ذخیره میشوند.
- AOF: پایگاه داده Redis میتواند تمام عملیات نوشتن را در یک فایل ثبت کند. از این فایل به منظور بازیابی مجموعه دادهها در صورت خرابی میتوان استفاده کرد.
کاربرد سیستم پیام رسانی Pub/Sub در Redis چیست؟
Redis یک سیستم پیام رسانی از نوع انتشار/اشتراک دارد که ارتباط آنی بین برنامههای مختلف را امکان پذیر میکند. در این سیستم ناشران به کانالها پیام ارسال میکنند و از سوی مقابل نیز مشترکین پیامها را از همین کانال دریافت میکنند.
کارایی بالا
پایگاه داده Redis کارایی و عملکرد برنامهها را بهبود میبخشد. این ابزار با نگه داشتن کل مجموعه دادهها در حافظه RAM و استفاده از ورودی و خروجی غیر مسدود برای ارتباطات شبکه امکان دسترسی به دادهها با تاخیر کم را فراهم میکند.
Redis چه کاربردهایی دارد؟
Redis در دنیای توسعه نرمافزار به عنوان یک ابزار متنباز برای ذخیرهسازی ساختار دادههای مختلف مورد استفاده قرار میگیرد. این ابزار به دلیل سرعت، انعطافپذیری و سازگاری بالای خود کاربردهای بسیاری دارد. از جمله مهمترین کاربردهای Redis به موارد زیر میتوان اشاره کرد.
- ذخیرهسازی
- مدیریت نِشستها
- تجزیه و تحلیل بلادرنگ
- صفبندی
- تابلوهای امتیازات بازی
- پیامرسانی
- یادگیری ماشین
- جغرافیایی
در ادامه این بخش به این سوال پاسخ داده شده است که مهمترین کاربردهای Redis چیست.
ذخیرهسازی
رایجترین مورد استفاده برای Redis استفاده از آن به عنوان «حافظه پنهان» (Cache) است. Redis دادههایی که به طور مکرر نیاز به دسترسی دارند را در حافظه کش ذخیره میکند. در نتیجه این امر تعداد درخواستهای ارسال شده از سمت برنامه به پایگاه داده یا API مورد نظر کاهش مییابد و سرعت برنامه افزایش پیدا میکند. علاوه بر این، Redis از انقضای خودکار دادههای کش شده پشتیبانی میکند. بنابراین، توسعه دهندگان در صورت استفاده از Redis نباید هیچ گونه نگرانی نسبت به دادههای قدیمی داشته باشند.
مدیریت نِشستها
یکی دیگر از کاربردهای Redis استفاده از آن به عنوان ابزاری برای مدیریت دادههای مربوط به نِشست در وب اپلیکیشنهای کاربردی است. در نتیجه این امر اطلاعات ورود کاربران در برنامه حتی در صورت تعویض دستگاه یا مرورگر از بین نخواهد رفت. علاوه بر این، میتوان Redis را به گونهای پیکربندی کرد که نشستها به طور خودکار پس از گذشت مدت زمان مشخصی منقضی شوند. در نتیجه این امر امنیت برنامه بهبود پیدا میکند.
![برنامه نویس در حال کدنویسی و استفاده از session در وب اپلیکیشن در حالی که عبارت session بر روی صفحه نمایش لپ تاپش دیده میشود - Redis](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/programmer-is-coding-and-using-sessions-in-her-web-application-while-the-word-session-is-seen-on-her-laptop-screen.jpg.webp)
تجزیه و تحلیل بلادرنگ
Redis با توجه به کارایی بالا و پشتیبانی از ساختار دادههای مختلف همچون مجموعههای مرتب شده گزینه ایدهآلی برای تجزیه و تحلیل دادههای بلادرنگ است. توسعه دهندگان میتوانند از Redis برای ذخیره دادههایی همچون تعداد بازدید از صفحات یا اقدامات کاربر استفاده کنند و این نوع دادهها را مورد تجزیه و تحلیل قرار دهند.
صفبندی
Redis از ساختارهای دادهای همچون لیستها و Streamها پشتیبانی میکند که برای ایجاد صفهای وظیفه، صف پیام و سیستمهای پردازش گزینه مناسبی هستند. از Redis برای کارهای پردازشی که در پس زمینه انجام میشوند نظیر ارسال ایمیل یا تولید گزارش میتوان استفاده کرد.
تابلوهای امتیازات بازی
از Redis میتوان در سیستمهای بازی برای ذخیره و مدیریت تابلوی امتیازات استفاده کرد. مجموعههای مرتب شده در Redis برای پیادهسازی تابلو امتیازات مورد استفاده قرار میگیرند و میتوان بازیکنان را بر اساس امتیازاتشان رتبهبندی کرد. با توجه به سرعت بالای خواندن و نوشتن در پایگاه داده Redis ثبت و بروزرسانی امتیازات بازیکنان در لحظه صورت میگیرد.
![تصویری که نشان دهنده برترین بازیکنان یک بازی کامپیوتری با امتیازاتشان است - Redis چیست](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/image-showing-list-of-the-top-players-of-a-computer-game-with-their-scores.jpg.webp)
پیامرسانی
سیستم پیامرسانی از نوع «انتشار-اشتراک» در Redis این ابزار را به انتخابی ایدهآل برای توسعه و پیادهسازی برنامههای چت آنی تبدیل کرده است. با استفاده از Redis برای ذخیره پیامهای چت توسعه دهندگان میتوانند از تاخیر پایین و مقیاسپذیری بالای این ابزار بهرهمند شوند.
یادگیری ماشین
یکی دیگر از کاربردهای Redis استفاده از آن برای ذخیره مدلهای یادگیری ماشین و پیشبینی در لحظه است. Redis با توجه به ذخیره مدلهای یادگیری ماشین در حافظه و ساختارهای داده خود برای انجام کارهایی همچون مدیریت وضعیت مدل و ارائه پیشبینی گزینه مناسبی است. این ابزار با ذخیرهسازی مدلها در حافظه و قابلیت انتقال دادهها با سرعت بالا میتواند پیشبینیهای سریعی را ارائه دهد و عملکرد یادگیری ماشین و پردازش دادههای مربوط به آن را بهبود بخشد. اگر به مبحث یادگیری ماشین علاقهمند هستید میتوانید فیلم آموزش یادگیری ماشین فرادرس که لینک آن در ادامه آورده شده است را مشاهده کنید.
جغرافیایی
Redis از ساختار دادههای مربوط به اطلاعات موقعیت مکانی پشتیبانی میکند و به توسعه دهندگان اجازه میدهد تا موقعیتهای مکانی را ذخیره و جستجو کنند. با توجه به توانایی Redis در ذخیره و جستجو اطلاعات جغرافیایی از این ابزار برای توسعه سرویسها و برنامههای مبتنی بر مکان همچون نقشههای تعاملی و برنامههای مسیریاب میتوان استفاده کرد.
یادگیری پایگاه داده با فرادرس
امروزه پایگاه دادهها نقش بسیار مهمی در دنیای برنامه نویسی دارند. توسعه دهندگان از پایگاه داده به منظور ذخیرهسازی و بازیابی داده، مقیاسپذیری، پشتیبانگیری، تجزیه و تحلیل دادهها، امنیت و بهینهسازی عملکرد برنامهها و سیستمهای نرمافزاری استفاده میکنند. برای یادگیری در مورد پایگاه داده در گام نخست ضروری است تا اصول اولیه و انواع پایگاه داده را به خوبی بشناسید. در صورت انتخاب پایگاه دادههای رابطهای برای تعامل با این نوع پایگاه داده لازم است تا زبان SQL را بیاموزید.
![مجموعه فیلم های آموزش پایگاه داده فرادرس](https://blog.faradars.org/wp-content/uploads/2024/06/database-courses-faradars.jpg)
بعد از آشنایی با اصول اولیه باید سیستم پایگاه داده مد نظر خود را انتخاب کنید. سپس، در قالب پروژههای کوچک برنامه نویسی کار با پایگاه داده را تمرین کنید تا به درک خوبی از عملکرد آن برسید. برای آشنایی با پایگاه دادههای مختلف میتوانید از مجموعه فیلمهای آموزش پایگاه داده فرادرس استفاده کنید که لینک آن در ادامه آورده شده است.
در مجموعه آموزش پایگاه داده فرادرس دورههای آموزشی متعددی وجود دارد که طیف گستردهای از پایگاه دادههای مختلف از MySQL و Access گرفته تا Oracle و MongoDB را شامل میشود. در ادامه تعدادی از دورههای پیشنهادی موجود در این مجموعه آموزشی آورده شده است.
- فیلم آموزش پایگاه دادهها و اصول طراحی آن فرادرس
- فیلم آموزش پایگاه داده MySQL فرادرس
- فیلم آموزش پایگاه داده پیشرفته فرادرس
- فیلم آموزش مقدماتی آپاچی کاساندرا فرادرس
مزایای استفاده از Redis چیست؟
Redis به توسعه دهندگان این امکان را میدهد تا ساختار دادههای مختلف را در حافظه به صورت زوج مرتب کلید-مقدار ذخیره کنند. بر همین اساس از این ابزار میتوان به عنوان پایگاه داده، حافظه پنهان یا واسطه ارسال پیام استفاده کرد. استفاده از Redis مزایای بسیاری را برای توسعه دهندگان به همراه دارد. برخی از مهمترین مزایای Redis عبارتنداز:
- سرعت بالا
- سازگاری
- پایداری
- دسترسیپذیری و مقیاسپذیری بالا
- کارایی بالا
- ساختار داده منعطف
- سادگی و سهولت استفاده
- متنباز بودن
در ادامه برای پاسخ به این سوال که مزایای استفاده از Redis چیست هر کدام از مزایای ذکر شده در بالا مورد بررسی قرار خواهد گرفت.
سرعت بالا
Redis به خاطر سرعت فوق العاده زیاد خود شناخته شده است، زیرا دادهها را در حافظه ذخیره میکند و میتواند عملیات را به سرعت انجام دهد. این ابزار از نظر کارایی و عملکرد بهینه شده است و گزینهای ایدهآل برای توسعه برنامههایی محسوب میشود که سرعت دسترسی و تاخیر کم در آنها اهمیت دارد.
تطبیقپذیری
Redis از ساختار دادههای مختلفی همچون رشتهها، هشها، لیستها، مجموعهها و سایر موارد پشتیبانی میکند. این تطبیقپذیری به توسعه دهندگان امکان میدهد تا از Redis برای طیف گستردهای از کارها همچون کش کردن اطلاعات، تجزیه و تحلیل بلادرنگ، ارسال پیام و سایر موارد استفاده کنند.
![برنامه نویس نشسته پشت لپ تاپش در حال کار با پایگاه داده Redis](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/programmer-sitting-behind-his-laptop-working-with-redis-database.jpg.webp)
پایداری
علی رغم ذخیره اطلاعات توسط Redis در حافظه این ابزار امکاناتی را نیز برای ماندگاری و دوام بیشتر دادهها ارائه میدهد. در نتیجه این امر Redis در شرایطی که دوام اطلاعات اهمیت دارد، گزینه خوبی محسوب میشود.
دسترسیپذیری و مقیاسپذیری بالا
Redis به گونهای طراحی شده است که از مقیاسپذیری بالایی برخوردار باشد. همچنین از خوشه بندی master-slave نیز پشتیبانی میکند. این مورد به توسعه دهندگان امکان میدهد تا از Redis به صورت توزیع شده برای مدیریت پردازشهای سنگین استفاده کنند.
کارایی بالا
یکی دیگر از نقاط قوت Redis کارایی بالای آن است. با توجه به این که Redis دادهها را در حافظه RAM ذخیره میکند. در نتیجه، سرعت انجام عملیات نیز توسط آن بهبود پیدا میکند. بر همین اساس Redis انتخابی مطمئن و عالی برای آن دسته از برنامههایی است که به تاخیر پایین و سرعت دسترسی بالا نیاز دارند.
ساختار داده منعطف
از دیگر نکات مثبت Redis به پشتیبانی آن از ساختار دادههای انعطافپذیر میتوان اشاره کرد. Redis طیف گستردهای از ساختارهای داده همچون رشتهها، لیستها، مجموعههای مرتب شده و سایر موارد را پشتیبانی میکند. این انعطافپذیری ذخیرهسازی و دستکاری انواع مختلف داده را آسان میکند.
سادگی و سهولت استفاده
Redis به گونهای طراحی شده است که استفاده از آن برای توسعه دهندگان آسان باشد. API ارائه شده توسط Redis بسیار ساده است و دستورات آن قابل درک هستند. علاوه بر این، Redis مستندات بسیار خوبی دارد که شروع کار برای توسعه دهندگان را آسان میکند.
متنباز بودن
آخرین نقطه قوت Redis میتوان به متنباز بودن آن اشاره کرد. این بدین معنا است که کد منبع آن در دسترس همگان قرار دارد و هر کسی میتواند آزاد در این پروژه مشارکت کند و با توجه به نیاز خود نسخه سفارشی از Redis را برای خود ایجاد کند.
![برنامه نویس نشسته پشت لپ تاپش در حال کار با پایگاه داده در حالی که عبارت Redis نیز بر روی دیوار نوشته شده است - Redis چیست](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/back-view-of-a-programmer-who-is-working-with-the-database-in-the-program-and-words-Redis-are-written-on-the-wall.jpg.webp)
معایب Redis چیست؟
Redis به عنوان یک ذخیرهساز ساختار داده درون حافظهای از محبوبیت بسیار بالایی برخوردار است. این ابزار علی رغم محبوبیت بالای خود معایبی نیز دارد که در ادامه به آنها اشاره شده است.
- ماندگاری پایین داده: با توجه به این که Redis دادهها را در حافظه ذخیره میکند. در نتیجه، در صورت از کار افتادن سرور یا راهاندازی مجدد آن امکان از بین رفتن دادههای ذخیره شده در Redis وجود دارد.
- محدودیت در حجم داده: میزان داده ذخیره شده توسط Redis نسبت مستقیمی با مقدار RAM موجود در سرور دارد. اگر میزان دادهها از RAM در نظر گرفته شده بیشتر باشد، آنگاه مشکلاتی در عملکرد پایگاه داده Redis به وجود خواهد آمد.
- فاقد امنیت داخلی: پایگاه داده Redis به خودی خود ویژگیهای امنیتی قدرتمندی را ارائه نمیدهد. توسعه دهندگان باید موارد امنیتی نظیر احراز هویت، رمزگذاری و امنیت شبکه را خودشان پیادهسازی کنند.
- هزینه بالا: Redis همانند سایر پایگاه دادههای مبتنی بر حافظه به مقدار زیادی از حافظه RAM نیاز دارد که این مورد هزینه بالایی را شامل میشود.
با وجود معایب ذکر شده در بالا Redis به دلیل سرعت، تطبیقپذیری و مجموعهای از ویژگیهای دیگر گزینه مناسبی برای بسیاری از برنامهها است.
آموزش نصب Redis در ویندوز
مهمترین نکته در خصوص Redis این است که این پایگاه داده با سیستمعامل ویندوز سازگار نیست و باید بر روی سیستمعاملهای سرور همچون لینوکس، BSD و OS X نصب شود. خوشبختانه با توجه به معرفی تکنولوژی «زیر سیستم ویندوز برای لینوکس» (Windows Subsystem for Linux | WSL) در ویندوز ۱۰ و ۱۱ به سادگی میتوان از بیشتر امکانات محیط لینوکس بدون استفاده از ماشین مجازی در ویندوز استفاده کرد.
بنابراین، برای نصب Redis در ویندوز در گام نخست باید قابلیت WSL را برای ویندوز فعال کرد. در ادامه این بخش مراحل نصب Redis در ویندوز از طریق WSL آموزش داده خواهد شد.
گام اول: فعال سازی WSL در ویندوز
برای فعالسازی قابلیت WSL در ویندوز ۲ راه وجود دارد. سادهترین راه برای فعالسازی این قابلیت از طریق رابط خط فرمان ویندوز است. برای فعالسازی WSL از طریق رابط خط فرمان باید دستور زیر را از طریق cmd وارد کرد.
1wsl --install
برای فعالسازی WSL از طریق رابط گرافیکی ویندوز باید از منوی استارت ویندوز برنامهTurn Windows features on or off را انتخاب کرد. با انتخاب این برنامه پنجره زیر نمایش داده خواهد شد.
![پنجره Windows Features در ویندوز برای نصب WSL](https://blog.faradars.org/wp-content/uploads/2024/06/install-wsl-on-windows.png)
برای فعالسازی قابلیت WSL در ویندوز همانند تصویر بالا باید گزینهWindows Subsystem for Linux را انتخاب کنید. در نهایت با کلیک بر روی دکمهOK این قابلیت بر روی ویندوز فعال خواهد شد. بعد از فعالسازی WSL باید سیستم را ریستارت کرد. اگر قصد یادگیری بیشتر در خصوص اجرای لینوکس روی ویندوز را دارید میتوانید فیلم آموزش اجرای لینوکس روی ویندوز با WSL فرادرس را مشاهده کنید که لینک آن در زیر آورده شده است.
گام دوم: نصب توزیع لینوکس مناسب بر روی ویندوز
بعد از فعالسازی قابلیت WSL بر روی ویندوز باید توزیع لینوکس مناسب را بر روی ویندوز نصب کرد. هر کدام از توزیعهای «اوبونتو» (Ubuntu)،«دبیان» (Debain) و «کالی لینوکس» (Kali Linux) را میتوان از طریق «فروشگاه مایکروسافت» (Microsoft Strore) بر روی ویندوز نصب کرد. در این بخش توزیع اوبونتو لینوکس بر روی ویندوز نشان داده شده است.
![صفحه دانلود توزیع ubuntu در فروشگاه مایکروسافت](https://blog.faradars.org/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2024/07/ubontu-on-microsoft-store.png.webp)
بعد از نصب ابونتو بر روی ویندوز نیاز است تا آن را بر روی ویندوز اجرا کنید. پیشتر در مطلب زیر از مجله فرادرس توزیعهای مختلف لینوکس برای امور مختلف مورد بررسی قرار گرفته است.
گام سوم: دانلود و نصب Redis
برای دانلود Redis باید دستور زیر را در خط فرمان اوبونتو وارد کرد.
1sudo apt-add-repository ppa:redislabs/redis
دستور بالا Redis را از مخزن این پایگاه داده دانلود خواهد کرد. سپس باید دستورات زیر را وارد کرد.
1sudo apt-get update
2sudo apt-get upgrade
با اجرای دستور زیر مراحل نصب Redis شروع خواهد شد.
1sudo apt-get install redis-server
بعد از اتمام موفقیت آمیز نصب Redis با اجرای دستور زیر سرویس Redis راهاندازی و فعال خواهد شد.
1sudo service redis-server start
در صورت راهاندازی موفق Redis با نوشتن دستورredis-cli خروجی زیر نمایش داده میشود.
$ 127.0.0.1:6379>
خروجی بالا نشان میدهد که سرویس Redis با موفقیت بر روی پورت ۶۳۷۹ لوکال هاست اجرا شده است. برای اطمینان از عملکرد این سرویس با نوشتن دستورping باید خروجی زیر را دریافت کنید.
1$ 127.0.0.1:6379> ping
2PONG
دریافت پاسخPONG برای دستور بالا نشان میدهد که سرویس Redis به موفقیت راهاندازی شده است.
شروع کار با Redis
همان طور که از ابتدای نوشته تاکنون نیز چندین مرتبه تاکید شد، Redis را میتوان یک ذخیرهساز ساختار داده در نظر گرفت. Redis اطلاعات را در قالب زوج مرتب کلید و مقدار ذخیره میکند. کار با Redis را از ابتداییترین دستورات آن یعنی SET و GET شروع خواهیم کرد.
با استفاده از دستور SET میتوان مقداری مشخص را برای یک کلید در نظر گرفت. در نقطه مقابل نیز با استفاده از دستور GET نیز میتوان مقدار در نظر گرفته شده برای یک کلید را بازیابی کرد. قطعه کد زیر نحوه استفاده از دستور SET در Redis را نشان میدهد.
1SET mykey "Hello world"
دستور بالا مقدارHello world از نوع رشته را برای کلیدmykey تنظیم میکند. در صورت اجرای صحیح دستور بالا مقدار زیر در خروجی نشان داده خواهد شد.
OK
برای بازیابی مقدار ذخیره شده در یک کلید مشخص میتوان از دستور GET در Redis استفاده کرد.
1GET mykey
قطعه کد بالا مقدار ذخیره شده در کلیدmykey را در خروجی نمایش خواهد داد. خروجی حاصل از اجرای دستور بالا به صورت زیر خواهد بود.
"Hello world"
در ادامه این بخش سایر دستورات رایج قابل استفاده در Redis ارائه شده است.
Redis از چه نوع داده هایی پشتیبانی می کند؟
یکی از نکات قوت Redis توانایی آن در ذخیرهسازی و مدیریت نوعهای دادهای مختلف است. توسعه دهندگان میتوانند ساختار دادههای مختلفی را در Redis ذخیرهسازی کنند. امکان ذخیرهسازی ۵ نوع دادهای مختلف در Redis وجود دارد. نوع دادههای قابل ذخیرهسازی در Redis عبارتنداز:
- «رشته» (String)
- «هشها» (Hashes)
- «لیستها» (Lists)
- «مجموعهها» (Sets)
- «مجموعههای مرتب شده» (Sorted Sets)
در ادامه این بخش توضیحات کاملی همراه با مثال در خصوص نحوه ذخیرهسازی هر کدام از نوع دادههای بالا در Redis ارائه شده است.
رشته در Redis
رشتهها در Redis دنبالهای از بایتها هستند. رشتههای Redis طول مشخصی دارند که توسط هیچ کاراکتر پایان دهنده خاصی تعیین نمیشود. بنابراین، میتوان هر چیزی تا اندازه ۵۱۲ مگابایت را در یک رشته ذخیره کرد. قطعه کد زیر نحوه ذخیرهسازی متغیر از نوع رشته در Redis را نشان میدهد.
1redis 127.0.0.1:6379> SET name "tutorialspoint"
2OK
3redis 127.0.0.1:6379> GET name
4"tutorialspoint"
در مثال بالا با استفاده از دستور SET در Redis رشته"tutorialspoint" در کلیدname ذخیره شده است. یک مقدار از نوع رشته در Redis میتواند حداکثر ۵۱۲ مگابایت طول داشته باشد.
ذخیره هش در Redis
هشها نوعی از داده هستند که امکان ذخیرهسازی مجموعهای از مقادیر به صورت کلید و مقدار را در یک کلید واحد فراهم میکنند. با وجود ظرفیت بالای ذخیرهسازی هشها این نوع داده فضای بسیار کمی از حافظه را اشغال میکند. بنابراین، میتوان چندین میلیون رکورد رو بدون مشکل در این نوع داده ذخیره کرد. از هشها در Redis برای ذخیرهسازی «اشیا» (Objects) یا موجودیتهایی استفاده میشود که دارای ویژگیهای متعددی هستند. قطعه کد زیر ذخیرهسازی دادهای از نوع هش در Redis را نشان میدهد.
1redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password
2tutorialspoint points 200
3OK
4redis 127.0.0.1:6379> HGETALL user:1
51) "username"
62) "tutorialspoint"
73) "password"
84) "tutorialspoint"
95) "points"
106) "200"
در مثال بالا از نوع داده هش برای ذخیرهسازی اطلاعات مربوط شیuser استفاده شده است. دستور HMSET در Redis برای ذخیره داده از نوع هش و دستور HGETALL برای بازیابی مقدار داده ذخیره شده از نوع هش در Redis مورد استفاده قرار میگیرد. هر متغیر از نوع هش در Redis توانایی ذخیره حداکثر (۱ -۲۳۲) زوج مرتب کلید و مقدار را دارد.
نوع داده لیست در Redis
ساختار داده لیست یکی دیگر از نوع دادههای پرکاربرد قابل ذخیرهسازی در Redis است. یک لیست مجموعه مرتب شدهای از مقادیر مرتبط با یک کلید منحصر به فرد است. مقادیر موجود در یک لیست به ترتیب ورود درج میشوند. امکان درج عناصر در ابتدا یا انتهای یک لیست در Redis وجود دارد. قطعه کد زیر نحوه درج مقادیر درون یک لیست از پایگاه داده Redis را نشان میدهد.
1redis 127.0.0.1:6379> lpush tutoriallist redis
2(integer) 1
3redis 127.0.0.1:6379> lpush tutoriallist mongodb
4(integer) 2
5redis 127.0.0.1:6379> lpush tutoriallist rabitmq
6(integer) 3
7redis 127.0.0.1:6379> lrange tutoriallist 0 10
8
91) "rabitmq"
102) "mongodb"
113) "redis"
در مثال بالا با استفاده از دستور lpush مقادیر مورد نظر در لیستtutoriallist به ترتیب از بالا درج شدهاند. برای نمایش مقادیر موجود در یک لیست ذخیره شده در Redis نیز از دستور lrange استفاده شده است. هر متغیر از نوع لیست در Redis توانایی ذخیره حداکثر (۱ -۲۳۲) عنصر را دارد.
نوع داده Set در Redis
نوع داده Set در Redis مجموعهای از عناصر منحصر به فرد را شامل میشود که به صورت نامنظم در یک کلید مشخص ذخیره میشوند. با توجه به اهمیت منحصر به فرد بودن عناصر در نوع داده Set امکان ذخیره مقادیر تکراری در این نوع داده وجود ندارد. بنابراین، این نوع داده گزینهای عالی هنگام کار با عناصر منحصر به فرد است. قطعه کد زیر نحوه ذخیره مقادیر در نوع داده Set در Redis را نشان میدهد.
1redis 127.0.0.1:6379> sadd tutoriallist redis
2(integer) 1
3redis 127.0.0.1:6379> sadd tutoriallist mongodb
4(integer) 1
5redis 127.0.0.1:6379> sadd tutoriallist rabitmq
6(integer) 1
7redis 127.0.0.1:6379> sadd tutoriallist rabitmq
8(integer) 0
9redis 127.0.0.1:6379> smembers tutoriallist
10
111) "rabitmq"
122) "mongodb"
133) "redis"
در مثال بالا با استفاده از دستور sadd مقادیر مختلفی در متغیرtutoriallist از نوع داده Set در Redis ذخیره شده است. همچنین، برای مشاهده مقادیر موجود در یک متغیر از نوع Set نیز از دستور smembers استفاده شده است. در مثال بالا مقدارrabitmq دو مرتبه به Set اضافه شده است که با توجه به منحصر به فرد بودن عناصر تنها یک مرتبه آن لحاظ شده است.
نوع داده Sorted Set در Redis
نوع داده Sorted Set در Redis مشابه با نوع داده Set است و برای ذخیره مجموعهای از عناصر منحصر به فرد مورد استفاده قرار میگیرد. تنها تفاوت این نوع داده با Set در این است که هر کدام از عناصر موجود در Soterd Set دارای یک امتیاز هستند. از این امتیاز برای مرتبسازی عناصر موجود در مجموعه استفاده میشود. با وجود منحصر به فرد بودن اعضا ممکن است که امتیازها تکرار شوند. قطعه کد زیر نحوه زیر یک متغیر از نوع Sorted Set را نشان میدهد.
1redis 127.0.0.1:6379> zadd tutoriallist 0 redis
2(integer) 1
3redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb
4(integer) 1
5redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
6(integer) 1
7redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
8(integer) 0
9redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000
10
111) "redis"
122) "mongodb"
133) "rabitmq"
در مثال بالا دستور zadd برای ذخیره مجموعهای از مقادیر درون متغیرtutoriallist از نوع Sorted Set مورد استفاده قرار گرفته است. همچنین، دستور ZRANGEBYSCORE نیز مقادیر موجود در این مجموعه را نمایش میدهد.
مهم ترین دستورات در Redis چیست؟
دستورات Redis به منظور انجام برخی از عملیات روی سرور Redis مورد استفاده قرار میگیرند. بعد از آشنایی با نوعهای دادهای موجود در Redis در این بخش با چند دستور اصلی Redis آشنا خواهید شد. در ادامه مهمترین دستورات Redis آورده شده است.
دستور | عملکرد |
SET Key value | مقداری را برای یک کلید مشخص میکند. |
GET Key | مقدار یک کلید را بازیابی میکند. |
DEL Key | یک کلید را حذف میکند. |
EXPIRE Key seconds | مقداری را برای یک کلید تنظیم میکند که بعد از مدت مشخصی منقضی میشود. |
HSET Key field value | مجموعهای از مقادیر را در یک متغیر از نوع هش ذخیره میکند. |
HGET Key field | مجموعه مقدار ذخیره شده در یک کلید هش را برمیگرداند. |
RPUSH Key value1[value2...] | یک یا چند مقدار را به یک لیست اضافه میکند. |
LRANGE Key start stop | عناصر موجود در محدوده مشخصی از یک لیست را برمیگرداند. |
SADD Key member1 [member2...] | یک یا چند مقدار را به یک متغیر از نوع Set اضافه میکند. |
SMEMBERS Key | تمام عناصر موجود در یک مجموعه از نوع Set را برمیگرداند. |
ZADD Key score member | یک عنصر را همراه با امتیاز آن به یک مجموعه از نوع Sorted Set اضافه میکند. |
ZRANGE Key start stop [WITHSCORES] | طیف از عناصر موجود در یک مجموعه از نوع Sorted Set را برمیگرداند. |
موارد ارائه شده در بالا تنها چند دستور اصلی برای شروع کار با Redis هستند. Redis مجموعه کاملی از دستورالعملها را برای ساختار دادهها و عملیات مختلف ارائه میدهد. برای دسترسی و مشاهده فهرست کامل این دستورات میتوانید به مستندات رسمی Redis مراجعه کنید.
جمعبندی
در مجموع Redis یک ابزار قدرتمند و همهکاره در حوزه ذخیرهسازی داده است که توسعه دهندگان را قادر میسازد تا برنامههایی سریع و با کارایی بالا بسازند. Redis با پشتیبانی از ساختار دادههای مختلف و ارائه طیف گستردهای از قابلیتها ذخیرهسازی و مدیریت مجموعه دادههای بزرگ را آسان میکند. دلیل اصلی محبوبیت Redis به خاطر سادگی، تطبیقپذیری و سرعت چشمگیر آن است که این ابزار را به انتخابی ایدهآل برای طیف گستردهای از کاربردها از تجزیه و تحلیل بلادرنگ گرفته تا پیامرسانی و توسعه اپلیکیشنهای کاربردی تبدیل کرده است. بر همین اساس در این مطلب از مجله فرادرس به این سوال پاسخ داده شد که Redis چیست و چه کاربردهایی دارد. برای آشنایی بیشتر با پایگاه دادههای مختلف و کاربردهای هر کدام میتوانید فیلمهای آموزشی موجود در مجموعه آموزش پایگاه داده فرادرس که لینک آن در ادامه آورده شده است را مشاهده کنید.
در این مطلب سعی شد تا به زبان ساده ویژگیها، کاربردها و مزایا و معایب Redis عنوان شود. علاوه بر این، نصب و راهاندازی این ابزار و نحوه استفاده از دستورات کاربردی آن نیز آموزش داده شد.