📄 محتوای کامل
اگر برای اجرای وردپرس، Laravel، Python، Node.js، PHP یا یک اپلیکیشن اختصاصی به Cache سریع و یک دیتاستور In-Memory نیاز دارید، احتمالاً نام Redis را دیدهاید.
Redis یکی از ابزارهای رایج برای Cache، Session، Queue، Rate Limiting و پردازش دادههای سریع است. اما نصب آن روی همه سیستمعاملها یکسان نیست؛ مخصوصاً وقتی پای سرورهای Ubuntu، Debian، AlmaLinux، Rocky Linux، RHEL، Docker یا Windows Server وسط باشد.
در این آموزش، نصب Redis را از صفر انجام میدهیم و بعد از نصب، سرویس، اتصال، پورت، احراز هویت، Persistence، فایروال و تست عملکرد را نیز بررسی میکنیم.
نکته: دستورات این مقاله برای محیطهای آزمایشی و سرورهای واقعی تفکیک شدهاند. Redis را بدون احراز هویت و محدودسازی شبکه روی اینترنت عمومی قرار ندهید.
Redis چیست و چه کاربردی دارد؟
Redis یک دیتاستور In-Memory است که دادهها را عمدتاً در حافظه نگهداری میکند و از ساختارهای داده مختلفی مانند String، List، Set، Sorted Set و Hash پشتیبانی میکند.
مهمترین کاربردهای Redis عبارتاند از:
- ⚡ Cache
- 🔐 ذخیره Session
- 📬 Queue
- 🚦 Rate Limiting
- 📊 شمارش و آمار لحظهای
- 🔄 Pub/Sub
- 🗃️ ذخیره موقت داده
- 🚀 کاهش فشار روی MySQL و PostgreSQL
- 🤖 استفاده در برخی معماریهای AI و Automation
به همین دلیل Redis را میتوان در بسیاری از سرورهای وب و اپلیکیشن مشاهده کرد.
قبل از نصب Redis چه چیزهایی لازم داریم؟
برای نصب Redis روی یک سرور لینوکسی معمولاً به موارد زیر نیاز دارید:
- دسترسی SSH یا Console
- دسترسی
rootیا کاربری دارایsudo - سیستمعامل پشتیبانیشده
- دسترسی به Repository یا اینترنت برای دریافت بستهها
- حداقل منابع سختافزاری متناسب با حجم داده
اگر Redis برای یک سایت یا اپلیکیشن کوچک استفاده میشود، منابع زیادی لازم نیست. اما برای Cache یا دیتاستورهای بزرگ باید مصرف RAM را دقیقاً محاسبه کنید.
Redis به RAM وابستگی جدی دارد. بنابراین قبل از انتخاب سرور، حجم داده، تعداد Keyها، TTL و سیاست Eviction را در نظر بگیرید.
آموزش نصب Redis روی Ubuntu
Ubuntu یکی از رایجترین سیستمعاملها برای اجرای Redis روی VPS است.
این روش برای محیطهایی که میخواهید Redis را از Repository خود Ubuntu نصب کنید، سادهترین گزینه است.
مرحله اول: بهروزرسانی Repository
ابتدا وارد سرور شوید:
ssh root@SERVER-IP سپس:
sudo apt update مرحله دوم: نصب Redis
sudo apt install redis-server -y برای بررسی نسخه:
redis-server --version و:
redis-cli --version فعال کردن Redis در Ubuntu
بعد از نصب، وضعیت سرویس را بررسی کنید:
sudo systemctl status redis-server اگر سرویس فعال نیست:
sudo systemctl start redis-server برای فعال شدن Redis هنگام Boot:
sudo systemctl enable redis-server یا میتوانید یکجا انجام دهید:
sudo systemctl enable --now redis-server تست Redis در Ubuntu
سادهترین تست:
redis-cli ping اگر همهچیز درست باشد، باید ببینید:
PONG برای ورود به Redis CLI:
redis-cli حالا:
127.0.0.1:6379> PING
PONG برای خروج:
exit مایکروسافت نیز در مستندات خود برای Redis روی Ubuntu در WSL همین الگوی نصب، اجرای سرویس و تست redis-cli ping را پیشنهاد میکند. (Microsoft Learn)
نصب Redis روی Debian
در Debian نیز روش نصب از Repository بسیار ساده است.
ابتدا:
sudo apt update سپس:
sudo apt install redis-server -y بررسی نسخه:
redis-server --version فعال کردن سرویس:
sudo systemctl enable --now redis-server بررسی وضعیت:
sudo systemctl status redis-server تست:
redis-cli ping خروجی مورد انتظار:
PONG نصب Redis روی Linux Mint
از آنجا که Linux Mint مبتنی بر Ubuntu/Debian است، روش معمول نصب به شکل زیر است:
sudo apt update
sudo apt install redis-server -y سپس:
sudo systemctl enable --now redis-server و تست:
redis-cli ping نصب Redis روی AlmaLinux
اگر سرور شما AlmaLinux است، روش نصب با Ubuntu متفاوت است.
ابتدا سیستم را بهروز کنید:
sudo dnf update -y سپس بررسی کنید چه بستهای از Redis در Repository سیستم در دسترس است:
sudo dnf search redis اگر بسته Redis در Repository فعال موجود بود:
sudo dnf install redis -y بعد:
sudo systemctl enable --now redis و وضعیت را بررسی کنید:
sudo systemctl status redis تست:
redis-cli ping باید:
PONG دریافت کنید.
نکته مهم: نسخه Redis موجود در Repository توزیع ممکن است با جدیدترین نسخه upstream یکسان نباشد. اگر به نسخه مشخصی از Redis نیاز دارید، قبل از نصب نسخه موجود در Repository را بررسی کنید.
نصب Redis روی Rocky Linux
در Rocky Linux نیز مانند AlmaLinux از dnf استفاده میشود.
sudo dnf update -y سپس:
sudo dnf search redis در صورت موجود بودن بسته:
sudo dnf install redis -y فعالسازی:
sudo systemctl enable --now redis بررسی:
sudo systemctl status redis تست:
redis-cli ping نصب Redis روی RHEL
در RHEL بهتر است ابتدا Repositoryهای فعال سیستم را بررسی کنید:
sudo subscription-manager repos --list-enabled سپس جستوجوی بسته:
sudo dnf search redis در صورت در دسترس بودن بسته Redis:
sudo dnf install redis -y سپس:
sudo systemctl enable --now redis و:
redis-cli ping نصب Redis روی Fedora
در Fedora:
sudo dnf update -y سپس:
sudo dnf install redis -y فعال کردن:
sudo systemctl enable --now redis بررسی:
sudo systemctl status redis و در نهایت:
redis-cli ping نصب Redis روی CentOS
برای CentOS باید بین نسخههای قدیمی و نسخههای جدید تفاوت قائل شوید.
در CentOSهای قدیمی، Repositoryها و نسخههای قابل نصب Redis ممکن است بسیار قدیمی باشند و برای پروژه جدید انتخاب مناسبی نباشند.
ابتدا:
yum search redis یا:
dnf search redis اگر بسته موجود بود:
sudo dnf install redis -y یا در سیستمهای قدیمی:
sudo yum install redis -y سپس:
sudo systemctl enable --now redis اگر سرور شما هنوز CentOS ۷ است، بهتر است قبل از نصب نرمافزارهای جدید، وضعیت پشتیبانی و امنیت خود سیستمعامل را بررسی کنید. نصب Redis جدید روی یک سیستمعامل قدیمی لزوماً به معنی داشتن یک زیرساخت بهروز و امن نیست.
نصب Redis روی Arch Linux
در Arch Linux:
sudo pacman -Syu سپس:
sudo pacman -S redis فعال کردن سرویس:
sudo systemctl enable --now redis بررسی:
sudo systemctl status redis تست:
redis-cli ping نصب Redis روی macOS
اگر از macOS برای محیط Development استفاده میکنید، Homebrew یکی از روشهای رایج نصب است.
ابتدا:
brew update سپس:
brew install redis برای اجرای Redis:
brew services start redis تست:
redis-cli ping خروجی:
PONG برای توقف سرویس:
brew services stop redis نصب Redis روی Windows
اینجا یک نکته مهم وجود دارد.
Redis Server اصلی سالهاست تمرکز اصلی خود را روی محیطهای Unix-like گذاشته و نصب مستقیم Redis روی Windows مثل Ubuntu یک مسیر استاندارد و ساده ندارد.
برای Windows چند گزینه دارید:
- WSL
- Docker
- راهکارهای سازگار با Windows مانند Memurai
برای محیط Development، استفاده از WSL2 معمولاً گزینه بسیار تمیزتری است.
مایکروسافت نصب Redis در WSL را مستقیماً با apt install redis-server مستند کرده است. (Microsoft Learn)
نصب Redis در Windows با WSL2
اگر Windows ۱۰ یا Windows ۱۱ دارید، ابتدا PowerShell را با Administrator اجرا کنید.
در نسخههای پشتیبانیشده Windows میتوانید از:
wsl --install استفاده کنید.
پس از Restart، Ubuntu را راهاندازی کنید.
مایکروسافت اعلام کرده است که wsl --install در Windows ۱۰ نسخه ۲۰۰۴ و Build ۱۹۰۴۱ به بالا و Windows ۱۱ قابل استفاده است. (Microsoft Learn)
حالا داخل Ubuntu:
sudo apt update سپس:
sudo apt install redis-server -y اجرای Redis:
sudo service redis-server start و تست:
redis-cli ping خروجی:
PONG نصب Redis روی Windows Server
در Windows Server نیز میتوان از WSL استفاده کرد.
Windows Server ۲۰۲۲ و ۲۰۲۵ امکان نصب WSL با:
wsl.exe --install را دارند. WSL در Windows Server ۲۰۱۹ و نسخههای بعدی نیز قابل استفاده است، هرچند روش نصب در نسخههای قدیمیتر متفاوت است. (Microsoft Learn)
بعد از راهاندازی Ubuntu داخل WSL، نصب Redis همانند Ubuntu انجام میشود:
sudo apt update
sudo apt install redis-server -y
sudo service redis-server start نصب Redis با Docker
اگر Docker روی سرور نصب است، اجرای Redis بسیار ساده میشود.
برای دریافت Image:
docker pull redis اجرای Container:
docker run -d \
--name redis \
-p 6379:6379 \
redis بررسی:
docker ps و تست:
docker exec -it redis redis-cli ping خروجی:
PONG اما یک نکته مهم
دستور بالا برای آزمایش مناسب است، اما برای Production بهتر است Redis را با تنظیمات Persistence، Authentication، Network Isolation و Volume مناسب اجرا کنید.
اجرای Redis در Docker با Volume
اگر میخواهید دادهها بعد از حذف Container باقی بمانند:
docker volume create redis-data سپس:
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
redis \
redis-server --appendonly yes حالا اطلاعات Redis در Volume ذخیره میشود.
بررسی:
docker exec -it redis redis-cli ping نصب Redis با Docker Compose
برای پروژههایی که Redis بخشی از یک Stack بزرگتر است، Docker Compose انتخاب مرتبتری است.
فایل:
docker-compose.yml مثلاً:
services:
redis:
image: redis:latest
container_name: redis
restart: unless-stopped
volumes:
- redis-data:/data
command: redis-server --appendonly yes
volumes:
redis-data: سپس:
docker compose up -d بررسی:
docker compose ps تست:
docker exec -it redis redis-cli ping Redis روی Kubernetes
اگر Redis را در Kubernetes اجرا میکنید، بهتر است موضوع را از نصب یک Redis ساده جدا کنید.
برای Production باید مواردی مانند:
- Persistence
- StatefulSet
- Storage
- Secret
- Service
- NetworkPolicy
- Backup
- High Availability
- Monitoring
را در نظر بگیرید.
برای محیطهای Kubernetes، استفاده از Helm یا Operator نیز میتواند مدیریت Redis را سادهتر کند. برای نمونه، Redis Enterprise Operator یک Helm Chart رسمی دارد. (helm.redis.io)
نصب Redis از Source Code
گاهی Repository سیستمعامل نسخه موردنیاز شما را ندارد.
در این شرایط میتوان Redis را از Source Code ساخت.
ابتدا ابزارهای Build را نصب کنید.
در Ubuntu:
sudo apt update
sudo apt install -y build-essential pkg-config سپس Source Code نسخه موردنظر را از منبع رسمی Redis دریافت کنید.
Redis فایلهای Release رسمی خود را در download.redis.io منتشر میکند و در حال حاضر شاخههای متعددی از Redis در آرشیو رسمی قابل مشاهده هستند. (Redis Download)
پس از دریافت Source:
tar -xzf redis-VERSION.tar.gz
cd redis-VERSION سپس:
make تست:
make test و در صورت موفقیت:
sudo make install برای Production بهتر است قبل از استفاده از Source Build، روش مدیریت سرویس، مسیر Configuration، User اختصاصی Redis و سیاست Update را مشخص کنید.
فایل تنظیمات Redis کجاست؟
محل فایل Configuration به روش نصب و توزیع سیستمعامل بستگی دارد.
در بسیاری از نصبهای Linux میتوانید مسیرهای احتمالی را با:
systemctl cat redis-server یا:
systemctl cat redis بررسی کنید.
همچنین:
ps aux | grep redis میتواند نشان دهد Redis با چه پارامترهایی اجرا شده است.
پورت پیشفرض Redis چیست؟
پورت استاندارد Redis:
6379 است.
برای بررسی Listening Port:
ss -lntp | grep 6379 یا:
sudo ss -lntp | grep redis اگر خروجی شبیه این باشد:
127.0.0.1:6379 یعنی Redis روی Loopback در دسترس است.
این حالت برای بسیاری از Web Serverهایی که Redis و Application روی یک ماشین هستند، مناسبتر و امنتر است.
چرا نباید Redis را مستقیماً روی اینترنت باز کنیم؟
یکی از اشتباهات خطرناک این است که در Configuration بنویسیم:
bind 0.0.0.0 و سپس پورت 6379 را در Firewall باز کنیم.
اگر Redis بدون احراز هویت و محدودیت شبکه روی اینترنت قرار بگیرد، هر کسی میتواند تلاش کند به آن متصل شود.
Redis را تا حد امکان فقط روی شبکه داخلی یا localhost قرار دهید.
برای مشاهده Listening:
ss -lntp | grep 6379 اگر Application و Redis روی یک VPS هستند، معمولاً نیازی نیست پورت ۶۳۷۹ از اینترنت قابل دسترسی باشد.
تنظیم Authentication برای Redis
در نسخههای مختلف Redis، روش احراز هویت میتواند بر اساس Configuration و ACL متفاوت باشد.
در محیطهای جدید، ACL روش قدرتمندتری برای تعریف User و Permission است.
برای مشاهده ACL:
redis-cli ACL LIST برای محیط Production، بهجای اتکا به یک رمز عبور مشترک، بهتر است Userها و Permissionهای مشخص ایجاد کنید.
تنظیم Redis برای دسترسی از سرور دیگر
فرض کنید دو سرور دارید:
Web Server
10.0.0.10
Redis Server
10.0.0.20 در این حالت Redis باید روی IP مناسب شبکه داخلی Listen کند.
مثلاً در Configuration:
bind 127.0.0.1 10.0.0.20 اما این IP را باید مطابق شبکه واقعی خودتان تنظیم کنید.
سپس Firewall را طوری تنظیم کنید که فقط Web Server بتواند به پورت ۶۳۷۹ دسترسی داشته باشد.
مثلاً:
Web Server → Redis:6379 ALLOW
Internet → Redis:6379 DENY این مدل بسیار امنتر از باز کردن Redis برای همه اینترنت است.
بررسی اتصال Redis از یک سرور دیگر
از Web Server:
redis-cli -h 10.0.0.20 -p 6379 ping اگر Authentication فعال باشد، باید با Credential مناسب متصل شوید.
تنظیم Firewall برای Redis
اگر Redis فقط روی همان سرور استفاده میشود، معمولاً لازم نیست پورت ۶۳۷۹ را در Firewall عمومی باز کنید.
اگر Redis روی سرور جداگانه قرار دارد، فقط IPهای موردنیاز را Allow کنید.
مثلاً با UFW:
sudo ufw allow from 10.0.0.10 to any port 6379 proto tcp و سپس:
sudo ufw status در سیستمهای RHEL-based نیز میتوانید از firewalld استفاده کنید:
sudo firewall-cmd --list-all و در صورت نیاز Rule محدود برای شبکه داخلی ایجاد کنید.
بررسی سلامت Redis
چند دستور بسیار کاربردی:
تست اتصال
redis-cli ping مشاهده اطلاعات Redis
redis-cli INFO مشاهده Memory
redis-cli INFO memory مشاهده Clients
redis-cli INFO clients مشاهده تعداد Keyها
redis-cli DBSIZE مشاهده مصرف RAM در Redis
یکی از مهمترین دستورات:
redis-cli INFO memory در خروجی پارامترهایی مانند:
used_memory
used_memory_human
used_memory_peak
maxmemory را مشاهده میکنید.
این اطلاعات برای تشخیص Memory Pressure بسیار مهم هستند.
تست واقعی ذخیره و دریافت اطلاعات
برای تست:
redis-cli SET test "NegarNovin" سپس:
redis-cli GET test باید:
"NegarNovin" دریافت کنید.
برای حذف:
redis-cli DEL test Redis و Cache وردپرس
یکی از رایجترین کاربردهای Redis، Object Cache در WordPress است.
در این معماری:
Visitor
↓
WordPress
↓
Redis Cache
↓
Database Redis میتواند برخی دادههای پرتکرار را در حافظه نگهداری کند و تعداد Queryهای موردنیاز برای Database را کاهش دهد.
البته Redis بهتنهایی تضمین نمیکند سایت سریع شود. عملکرد نهایی به PHP، Web Server، Database، Cache Policy، منابع سرور و معماری WordPress نیز وابسته است.
Redis در Laravel
Laravel نیز Redis را برای مواردی مانند:
- Cache
- Queue
- Session
پشتیبانی میکند.
در چنین معماریای Redis میتواند بین Application و Database قرار بگیرد.
مثلاً:
Laravel
│
├── Redis → Cache
│
├── Redis → Queue
│
└── MySQL → Persistent Data این جداسازی میتواند مدیریت Application را بسیار بهتر کند.
Redis در Python
در Python میتوان از Clientهای Redis استفاده کرد.
نمونه ساده:
import redis
r = redis.Redis(
host="127.0.0.1",
port=6379,
decode_responses=True
)
r.set("name", "NegarNovin")
print(r.get("name")) خروجی:
NegarNovin Redis در Node.js
در Node.js نیز Redis کاربرد گستردهای دارد.
برای مثال با یک Redis Client میتوان:
Node.js
↓
Redis
↓
Cache / Session / Queue را پیادهسازی کرد.
نکته مهم این است که اطلاعات اتصال Redis را داخل Source Code عمومی قرار ندهید و از Environment Variables یا Secret Management استفاده کنید.
Redis Persistence چیست؟
Redis به دلیل In-Memory بودن، موضوع Persistence اهمیت خاصی دارد.
دو مفهوم مهم:
RDB
در RDB، Snapshotهایی از Dataset ایجاد میشود.
مزیت آن حجم مناسب و Recovery نسبتاً ساده است.
AOF
در AOF، عملیات Write در فایل ثبت میشوند.
این روش میتواند برای سناریوهایی که نیاز به Durability بیشتری دارند مناسب باشد، البته هزینه I/O و حجم فایل نیز باید در نظر گرفته شود.
Redis مستندات و فایلهای رسمی مربوط به نسخههای مختلف خود را در مخزن انتشار رسمی ارائه میکند. (Redis Download)
آیا Redis باید Backup شود؟
اگر Redis فقط Cache قابل بازسازی باشد، ممکن است Backup آن اولویت بالایی نداشته باشد.
اما اگر Redis شامل اطلاعاتی باشد که از دست رفتن آنها برای Application مشکل ایجاد میکند، باید Persistence و Backup را جدی بگیرید.
مثلاً:
| نوع استفاده | اهمیت Backup |
|---|---|
| Cache ساده | پایین |
| Session | متوسط |
| Queue | وابسته به معماری |
| داده اصلی Application | بالا |
| اطلاعات حیاتی | بسیار بالا |
خطاهای رایج هنگام نصب Redis
خطای Connection refused
مثلاً:
Could not connect to Redis at 127.0.0.1:6379
Connection refused ابتدا:
sudo systemctl status redis-server یا:
sudo systemctl status redis سپس:
ss -lntp | grep 6379 اگر Redis اجرا نیست:
sudo systemctl start redis-server خطای
redis-cli: command not found یعنی Client نصب نشده یا در PATH نیست.
در Ubuntu:
sudo apt install redis-tools -y سپس:
redis-cli ping اگر Redis بعد از Reboot اجرا نشد
وضعیت:
systemctl is-enabled redis-server یا:
systemctl is-enabled redis اگر Disabled باشد:
sudo systemctl enable redis-server سپس:
sudo systemctl start redis-server بررسی Logهای Redis
برای سیستمهای systemd:
journalctl -u redis-server یا:
journalctl -u redis برای مشاهده Logهای اخیر:
journalctl -u redis-server -n 100 --no-pager و برای دنبال کردن Log:
journalctl -u redis-server -f این دستورات در زمان Troubleshooting بسیار کاربردی هستند.
آیا Redis را روی VPS نصب کنیم؟
بله، VPS یکی از محیطهای رایج برای اجرای Redis است.
اگر Redis برای یک سایت یا Application استفاده میشود، میتوانید Redis و Application را روی یک VPS قرار دهید:
VPS
├── Nginx
├── PHP / Python / Node.js
├── Redis
└── Database برای پروژههای بزرگتر میتوان Redis را روی سرور جداگانه قرار داد:
Web Server
│
├──── Redis Server
│
└──── Database Server مزیت معماری دوم، جداسازی منابع و امکان Scale کردن مستقل سرویسهاست.
چه مقدار RAM برای Redis نیاز داریم؟
عدد ثابتی وجود ندارد.
حجم RAM موردنیاز به موارد زیر وابسته است:
- تعداد Keyها
- حجم Valueها
- ساختار داده
- تعداد Clientها
- تعداد درخواستها
- Replication
- Persistence
- Fragmentation
- سیاست Eviction
برای یک Cache کوچک، چند صد مگابایت ممکن است کافی باشد.
اما Datasetهای بزرگ Redis میتوانند دهها یا صدها گیگابایت RAM نیاز داشته باشند.
بنابراین RAM سرور را بر اساس Dataset واقعی انتخاب کنید، نه صرفاً تعداد هسته CPU.
چکلیست نهایی نصب Redis
قبل از اینکه نصب را تمامشده بدانید، این موارد را بررسی کنید:
- Redis نصب شده
-
redis-server --versionجواب میدهد - سرویس Running است
- سرویس بعد از Reboot اجرا میشود
-
redis-cli pingمقدارPONGمیدهد - پورت ۶۳۷۹ بررسی شده
- Redis به اینترنت عمومی باز نیست
- Authentication/ACL تنظیم شده
- Firewall تنظیم شده
- RAM کافی است
- Persistence بر اساس نیاز تنظیم شده
- Backup در صورت نیاز فعال است
- Logها بررسی شدهاند
- Application به Redis متصل میشود
جمعبندی آموزش نصب Redis
نصب Redis روی اکثر Linux Serverها بسیار ساده است، اما نصب موفق با راهاندازی امن و اصولی یکی نیست.
روی Ubuntu و Debian معمولاً میتوانید از apt استفاده کنید و در خانواده RHEL مانند AlmaLinux، Rocky Linux، Fedora و RHEL معمولاً dnf مسیر اصلی مدیریت بسته است. در Windows نیز WSL2 یا Docker گزینههای مناسبی برای محیط Development هستند. برای Containerها نیز Docker و Docker Compose مدیریت Redis را ساده میکنند.
بعد از نصب، مهمترین مرحله Configuration است. Redis را بیدلیل روی 0.0.0.0:6379 در اینترنت عمومی قرار ندهید. دسترسی شبکه، Authentication/ACL، Firewall، Persistence و Backup را بر اساس کاربرد واقعی سرویس تنظیم کنید.
اگر Redis را برای WordPress، Laravel، Python، Node.js یا یک Application اختصاصی روی VPS نصب میکنید، بهتر است منابع سرور را متناسب با حجم Cache و Dataset انتخاب کنید.