وقتی وبسایت یا اپلیکیشنی با حجم زیادی از درخواستها و کوئریهای تکراری روبهرو میشود، Redis میتواند بخشی از فشار روی دیتابیس اصلی را کم کند و سرعت پاسخگویی را افزایش دهد. به همین دلیل، نصب Redis روی Ubuntu یکی از راهکارهای رایج برای بهبود عملکرد پروژههای تحت وب است.
Redis دادهها را بهجای دیسک در RAM نگه میدارد و همین ویژگی امکان دسترسی بسیار سریع به اطلاعات را فراهم میکند. در این مطلب از مجلۀ ویپیاس مارکت، نصب Redis روی Ubuntu را مرحلهبهمرحله پیش میبریم و در ادامه، نحوۀ مدیریت سرویس، تست عملکرد و تنظیمات پایه و امنیتی آن را بررسی میکنیم.
Redis چیست؟
Redis که مخفف Server Dictionary Remote است، یک دیتابیس متنباز و درونحافظه از نوع Key-Value Store محسوب میشود. در این ساختار، هر داده با یک کلید مشخص ذخیره میشود و از طریق همان کلید میتوان خیلی سریع به آن دسترسی پیدا کرد.
برخلاف دیتابیسهای رابطهای مانند MySQL، ردیس دادهها را مستقیماً در حافظۀ اصلی یا RAM نگه میدارد. به همین دلیل، عملیات خواندن و نوشتن در آن با سرعت بالایی انجام میشود.
Redis فقط برای ذخیره جفتهای سادۀ کلید و مقدار نیست و از ساختارهای دادهای مختلفی مانند String، List، Set، Hash و Sorted Set هم پشتیبانی میکند. همین قابلیت باعث شده است که کاربرد آن فراتر از یک سیستم کش ساده باشد.
در عمل میتوان از Redis برای کشکردن نتیجۀ کوئریهای دیتابیس، نگهداری Session کاربران، پیادهسازی صف پیام با Pub/Sub و حتی ساخت Leaderboardهای لحظهای استفاده کرد.
چرا از Redis روی سرور مجازی استفاده کنیم؟
اجرای Redis روی یک VPS لینوکس میتواند در سناریوهای مختلف مفید باشد. مهمترین مزایای آن عبارتاند از:
|
مزیت |
توضیح |
|
سرعت بالا |
نگهداری داده در RAM و حذف بخش زیادی از عملیات ورودی و خروجی دیسک، تأخیر را کاهش میدهد. |
|
کاهش بار دیتابیس اصلی |
کشکردن کوئریهای پرتکرار، فشار روی MySQL یا PostgreSQL را کمتر میکند. |
|
ساختارهای دادۀ متنوع |
پشتیبانی از Hash، Set، List و Sorted Set امکان پیادهسازی سناریوهای مختلف را فراهم میکند. |
|
مقیاسپذیری |
قابلیتهایی مانند Replication و Clustering برای مدیریت ترافیک بالا در دسترس هستند. |
| پشتیبانی از زبانهای مختلف |
Redis با طیف گستردهای از زبانهای برنامهنویسی قابل استفاده است. |
در وبسایتهای پربازدید، فروشگاههای اینترنتی یا APIهایی که تعداد زیادی درخواست دریافت میکنند، ترکیب یک VPS مناسب با Redis میتواند زمان پاسخگویی را کاهش دهد و فشار روی زیرساخت اصلی را کمتر کند.
پیشنیازهای نصب Redis روی Ubuntu
قبل از شروع نصب Redis در Ubuntu، بهتر است در ابتدا موارد زیر را آماده کنید تا مراحل نصب و راهاندازی بدون مشکل پیش برود.
- سرور مجازی با سیستمعامل Ubuntu: برای این آموزش به یک سرور Ubuntu، ترجیحاً نسخۀ 22.04 LTS، نیاز دارید. اگر هنوز سروری تهیه نکردهاید، با خرید VPS لینوکس میتوانید محیطی اختصاصی و قابلکنترل برای پروژۀ خود داشته باشید. از آنجا که Redis اطلاعات را در حافظه نگه میدارد، مقدار RAM سرور را هم متناسب با حجم دادههای پروژه انتخاب کنید.
- کاربر غیر root با دسترسی sudo: بهتر است دستورات مدیریتی را مستقیماً با کاربر root اجرا نکنید، در عوض یک کاربر عادی با دسترسی sudo ایجاد کنید تا بتوانید تغییرات موردنیاز را با ریسک امنیتی کمتر انجام دهید.
- اتصال SSH به سرور: برای اجرای دستورات از راه دور باید از طریق SSH به سرور متصل شوید. در لینوکس میتوانید از OpenSSH و در ویندوز از ابزارهایی مانند PuTTY استفاده کنید.
- فعالبودن فایروال UFW: پیش از در دسترس قرار دادن سرویس، دسترسی به پورت پیشفرض Redis یعنی 6379 را محدود کنید. بهتر است این پورت فقط برای IPهای مجاز باز باشد و در دسترس عموم قرار نگیرد.
- بهروز بودن مخازن APT: پیش از نصب Redis، فهرست بستههای موجود در مخازن را بهروز کنید تا نسخۀ موجود در مخازن سیستم دریافت شود.
آموزش نصب Redis در Ubuntu
بعد از آمادهکردن پیشنیازها، میتوانید نصب Redis روی Ubuntu را شروع کنید. نصب از طریق مخازن اوبونتو مراحل پیچیدهای ندارد و با چند دستور به شکل زیر انجام میشود:
۱) بهروزرسانی APT
ابتدا فهرست بستههای موجود را بهروز کنید:
sudo apt update
۲) نصب Redis Server
حالا Redis و وابستگیهای موردنیاز آن را نصب کنید:
sudo apt install redis-server
APT فایلهای لازم را دریافت و Redis را روی سرور نصب میکند.
۳) بررسی نسخۀ نصبشده
بعد از پایان نصب، نسخۀ Redis را بررسی کنید:
redis-cli --version
در خروجی این دستور باید نسخۀ نصبشده Redis را ببینید.
۴) بررسی وضعیت سرویس
برای اطمینان از اجرای صحیح سرویس، دستور زیر را وارد کنید:
sudo systemctl status redis
اگر Redis بهدرستی اجرا شده باشد، وضعیت سرویس باید بهصورت active (running) نمایش داده شود.
چگونه Redis را روی Ubuntu فعال و مدیریت کنیم؟
بعد از راه اندازی Redis در لینوکس، میتوانید سرویس آن را با systemd مدیریت کنید. برای انجام این کار میتوانید از دستورات اصلی جدول زیر استفاده کنید:
|
دستور |
کاربرد |
|
sudo systemctl start redis |
شروع سرویس Redis |
|
sudo systemctl stop redis |
توقف سرویس Redis |
|
sudo systemctl restart redis |
راهاندازی مجدد سرویس |
|
sudo systemctl enable redis |
اجرای خودکار Redis هنگام بوت سرور |
|
sudo systemctl disable redis |
غیرفعالکردن اجرای خودکار |
اگر Redis باید همیشه همراه با سرور اجرا شود، دستور enable را فعال کنید. در این حالت، پس از هر بار بوتشدن سیستم، سرویس Redis نیز بهصورت خودکار راهاندازی میشود.
تست عملکرد Redis در Ubuntu
بعد از نصب Redis در Ubuntu، بهتر است اتصال و عملکرد اولیۀ آن را بررسی کنید. برای بررسی این موارد، ابتدا وارد محیط خط فرمان Redis شوید:
redis-cli
سپس دستور زیر را اجرا کنید:
ping
اگر اتصال برقرار باشد، Redis این پاسخ را برمیگرداند:
PONG
برای آزمایش عملیات نوشتن و خواندن نیز میتوانید یک مقدار آزمایشی ذخیره کنید:
set test "It's working"
سپس همان مقدار را بخوانید:
get test
اگر مقدار ذخیرهشده نمایش داده شود، عملیات خواندن و نوشتن Redis بهدرستی انجام میشود.
برای بررسی ماندگاری دادهها نیز میتوانید سرویس را یکبار ریاستارت و دوباره مقدار test را بررسی کنید. در صورت باقیماندن مقدار، داده پس از راهاندازی مجدد نیز در دسترس است.
آموزش کانفیگ Redis در Ubuntu
تنظیمات اصلی Redis در فایل زیر قرار دارند:
/etc/redis/redis.conf
برای ویرایش این فایل میتوانید از nano استفاده کنید:
sudo nano /etc/redis/redis.conf
پس از بازکردن فایل، چند تنظیم مهم وجود دارد که بهتر است بررسی شوند.
تنظیم supervised روی systemd
این گزینه نحوۀ تعامل Redis با سیستم مدیریت سرویس Ubuntu را مشخص میکند. مقدار آن را از no به systemd تغییر دهید تا مدیریت سرویس از طریق systemd انجام شود.
محدودکردن دسترسی با bind
اگر قرار نیست Redis از خارج سرور در دسترس باشد، میتوانید اتصال را به localhost محدود کنید:
bind 127.0.0.1
برای دسترسی از شبکه داخلی نیز میتوان IP موردنظر را در کنار localhost اضافه کرد:
bind 127.0.0.1 192.168.1.100
به این ترتیب Redis فقط روی آدرسهایی که مشخص کردهاید اتصال میپذیرد.
تغییر نام دستورات خطرناک
دستوراتی مانند FLUSHALL و SHUTDOWN در صورت دسترسی غیرمجاز میتوانند مشکلات جدیای ایجاد کنند. برای محدودکردن این دستورات میتوانید آنها را در فایل کانفیگ غیرفعال یا نامشان را تغییر دهید.
برای نمونه:
"" rename-command FLUSHALL
با این تنظیم، دستور FLUSHALL غیرفعال میشود. روش دیگر این است که بهجای رشتۀ خالی، نامی غیرقابلحدس برای آن انتخاب کنید.
تنظیم رمز عبور
برای اضافهکردن یک لایۀ امنیتی دیگر، میتوانید گزینۀ requirepass را فعال و یک رمز عبور قوی تعیین کنید. در این حالت، کلاینتها پیش از اجرای دستورات باید احراز هویت شوند.
تعیین محدودیت حافظه
از آنجا که Redis دادهها را در RAM نگه میدارد، بهتر است میزان حافظه قابل استفاده آن را کنترل کنید.
با گزینۀ maxmemory میتوانید حداکثر حافظۀ در دسترس Redis را مشخص کنید. همچنین با maxmemory-policy رفتار Redis در زمان پرشدن حافظه تعیین میشود.
برای نمونه، سیاست allkeys-lru باعث میشود زمانی که حافظه به سقف تعیینشده رسید، دادههای کماستفادهتر از حافظه خارج شوند.
اعمال تغییرات
بعد از ویرایش فایل کانفیگ، سرویس Redis را ریاستارت کنید:
sudo systemctl restart redis
با این کار تنظیمات جدید اعمال میشوند.
جمعبندی
نصب Redis روی Ubuntu تنها چند مرحله دارد و از طریق مخازن اوبونتو بهسادگی انجام میشود. بخش مهمتر، تنظیم Redis روی سرور مجازی است که بعد از نصب انجام میدهید؛ چون نحوۀ دسترسی به سرویس، مصرف حافظه و تنظیمات امنیتی میتوانند مستقیماً روی عملکرد و امنیت سرور تأثیر بگذارند.
Redis با نگهداری دادهها در حافظه و کشکردن درخواستهای پرتکرار، میتواند فشار روی دیتابیس اصلی را کاهش دهد و زمان پاسخگویی پروژه را بهتر کند. در کنار نصب Redis، کانفیگ سرور و محدودکردن دسترسیهای غیرضروری را هم جدی بگیرید تا سرویس در محیطی امن و پایدار اجرا شود.
سؤالات متداول
آیا Redis دادهها را پس از ریاستارت سرور از دست میدهد؟
Redis بهطور پیشفرض دادهها را در RAM نگه میدارد، اما با فعالکردن مکانیزمهای Persistence مانند RDB یا AOF میتوان دادهها را روی دیسک ذخیره کرد تا بعد از ریاستارت دوباره در دسترس باشند.
تفاوت Redis با Memcached چیست؟
هر دو برای ذخیره داده در حافظه و کشکردن اطلاعات استفاده میشوند، اما Redis از ساختارهای دادۀ متنوع، Persistence و Replication پشتیبانی میکند. Memcached ساختار سادهتری دارد و بیشتر برای کشکردن جفتهای کلید و مقدار استفاده میشود.
آیا میتوان چند پایگاهداده جداگانه در یک نمونه Redis داشت؟
بله. Redis بهصورت پیشفرض ۱۶ پایگاهداده منطقی از ۰ تا ۱۵ در اختیار شما قرار میدهد و با دستور SELECT میتوانید بین آنها جابهجا شوید.
چگونه از Redis بهعنوان صف پیام استفاده کنیم؟
با استفاده از ساختار List و قابلیت Pub/Sub میتوان Redis را بهعنوان یک واسطۀ پیامرسانی سبک برای صفهای کاری و رویدادها به کار گرفت.
آیا Redis برای ذخیرهسازی دادههای اصلی مناسب است؟
Redis بیشتر برای کش و دادههای موقت بهینه شده است. برای دادههای حیاتی و تراکنشی بهتر است یک دیتابیس رابطهای منبع اصلی داده باشد و Redis بهعنوان لایه کش در کنار آن استفاده شود.
آیا نصب Redis از مخازن رسمی Ubuntu بهترین روش برای سرور مجازی است؟
برای بیشتر سناریوهای معمول، نصب Redis از طریق APT روش ساده و استانداردی است و مدیریت بهروزرسانی بستهها را هم آسانتر میکند. با این حال، اگر پروژه به نسخه یا قابلیت خاصی نیاز داشته باشد، میتوان روشهای نصب دیگر را نیز بررسی کرد.






