اگر با Laravel کار کرده باشید، احتمالاً نام Redis را در موضوعاتی مثل Cache، Queue، Session و پردازشهای پسزمینه دیدهاید. اما Redis دقیقاً چیست و چرا در پروژههای Laravel استفاده میشود؟
Redis یک ذخیرهساز داده در حافظه (In-Memory Data Store) است که به دلیل سرعت بسیار بالا میتواند برای ذخیره موقت دادهها، کش، صفهای پردازشی، شمارندهها، Lockها و بعضی دادههای سریعالوصول استفاده شود.
Laravel نیز بهصورت داخلی امکانات مناسبی برای کار با Redis دارد و میتوان آن را بهعنوان یکی از اجزای اصلی زیرساخت یک پروژه Laravel استفاده کرد.
در این آموزش ابتدا با مفهوم Redis آشنا میشویم و سپس مرحلهبهمرحله نحوه اتصال Redis به Laravel و استفاده از آن را بررسی میکنیم.
Redis چیست؟
Redis یک سیستم ذخیرهسازی داده بسیار سریع است که دادهها را عمدتاً در حافظه RAM نگهداری میکند.
برخلاف دیتابیسهایی مانند MySQL و PostgreSQL که معمولاً برای ذخیره دائمی دادههای اصلی برنامه استفاده میشوند، Redis بیشتر برای دادههایی مناسب است که باید با سرعت بسیار بالا خوانده یا تغییر داده شوند.
برای مثال فرض کنید صفحه اصلی یک سایت Laravel برای نمایش تعداد زیادی محصول، اطلاعاتی را از دیتابیس دریافت میکند.
اگر این اطلاعات در هر درخواست دوباره از MySQL خوانده شوند، با افزایش تعداد کاربران فشار بیشتری به دیتابیس وارد میشود.
در این شرایط میتوان نتیجه Query را در Redis ذخیره کرد و در درخواستهای بعدی مستقیماً از Redis خواند.
به این ترتیب:
کاربر
↓
Laravel
↓
Redis
↓
اگر داده وجود داشت → استفاده از Cache
↓
اگر وجود نداشت
↓
MySQL
↓
ذخیره نتیجه در Redis
به همین دلیل Redis یکی از ابزارهای مهم برای افزایش Performance برنامههای Laravel محسوب میشود.
Redis چه کاربردی در Laravel دارد؟
Redis فقط برای Cache استفاده نمیشود و کاربردهای مختلفی در یک پروژه Laravel دارد.
مهمترین کاربردها عبارتاند از:
| کاربرد | توضیح |
|---|---|
| Cache | ذخیره موقت دادههای پرتکرار |
| Queue | پردازش Jobها در پسزمینه |
| Session | ذخیره Session کاربران |
| Lock | ایجاد قفل برای جلوگیری از اجرای همزمان عملیات |
| Counter | شمارش سریع مقادیر |
| Rate Limiting | محدود کردن تعداد درخواستها |
| Temporary Data | ذخیره دادههای موقت |
| Real-time Data | استفاده در برخی معماریهای بلادرنگ |
در پروژههای بزرگتر معمولاً Redis تنها یک ابزار جانبی نیست و به یکی از اجزای مهم معماری برنامه تبدیل میشود.
# چرا Redis سریع است؟
یکی از دلایل اصلی سرعت Redis این است که دادهها را در حافظه RAM نگهداری میکند.
خواندن اطلاعات از RAM معمولاً بسیار سریعتر از خواندن داده از Storage و انجام Queryهای پیچیده روی دیتابیس است.
البته این به معنی آن نیست که Redis باید جایگزین MySQL یا PostgreSQL شود.
این دو ابزار معمولاً نقشهای متفاوتی دارند.
MySQL و PostgreSQL
برای مواردی مانند:
- اطلاعات کاربران
- سفارشها
- محصولات
- تراکنشها
- اطلاعات مالی
- دادههای اصلی سیستم
مناسب هستند.
Redis
برای مواردی مانند:
- Cache
- Queue
- Lock
- Counter
- Session
- دادههای موقت
مناسبتر است.
بنابراین در یک معماری معمول Laravel میتوانیم داشته باشیم:
Laravel
│
├── MySQL / PostgreSQL
│ └── دادههای اصلی
│
└── Redis
├── Cache
├── Queue
├── Session
└── Lock
# آیا Redis جایگزین MySQL است؟
خیر.
این یکی از اشتباهات رایج در هنگام شروع کار با Redis است.
Redis و MySQL اهداف یکسانی ندارند.
فرض کنید اطلاعات یک سفارش در سیستم شما شامل این موارد باشد:
order_id
user_id
amount
status
created_at
این اطلاعات معمولاً باید در دیتابیس اصلی ذخیره شوند.
اما اگر بخواهید تعداد سفارشهای امروز را برای مدت کوتاهی Cache کنید، Redis میتواند انتخاب بسیار مناسبی باشد.
بنابراین بهتر است Redis را در کنار دیتابیس اصلی استفاده کنید، نه بهعنوان جایگزین آن.
# Redis چگونه در Laravel استفاده میشود؟
Laravel برای کار با Redis چند مسیر مختلف در اختیار شما قرار میدهد.
برای مثال میتوانید از Redis برای Cache استفاده کنید:
Cache::put('site_name', 'CMSNevis', 3600);
یا مستقیماً با Redis کار کنید:
Redis::set('site_name', 'CMSNevis');
$name = Redis::get('site_name');
همچنین Laravel میتواند از Redis بهعنوان Queue Driver استفاده کند.
مثلاً:
QUEUE_CONNECTION=redis
در این حالت Jobهای Laravel به Redis ارسال میشوند و Worker آنها را پردازش میکند.
# نصب Redis
برای استفاده از Redis در Laravel ابتدا باید یک Redis Server در محیط اجرای برنامه داشته باشید.
در سرورهای Ubuntu معمولاً میتوانید Redis را با این دستورات نصب کنید:
sudo apt update
sudo apt install redis-server
بعد از نصب، وضعیت Redis را بررسی کنید:
sudo systemctl status redis-server
برای بررسی اینکه Redis واقعاً در حال پاسخگویی است، از redis-cli استفاده کنید:
redis-cli ping
اگر Redis بهدرستی اجرا شده باشد، معمولاً نتیجه زیر را میبینید:
PONG
این یعنی Redis آماده دریافت درخواست است.
# پورت پیشفرض Redis چیست؟
Redis بهصورت معمول روی پورت زیر اجرا میشود:
6379
بنابراین اگر Redis روی همان سروری اجرا شود که Laravel قرار دارد، تنظیمات معمول میتواند به شکل زیر باشد:
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
اگر Redis روی سرور دیگری قرار داشته باشد، باید Host مربوط به همان سرور را تنظیم کنید.
البته در محیط Production نباید Redis را بدون تنظیمات امنیتی مناسب مستقیماً روی اینترنت عمومی قرار دهید.
# اتصال Laravel به Redis
Laravel تنظیمات Redis را از فایل .env و Configurationهای پروژه دریافت میکند.
نمونه تنظیمات رایج:
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
در اینجا:
REDIS_CLIENTمشخص میکند Laravel از چه Clientای استفاده کند.REDIS_HOSTآدرس Redis Server است.REDIS_PASSWORDرمز Redis است.REDIS_PORTپورت Redis است.
پس از تغییر .env، اگر Configuration پروژه Cache شده باشد، باید آن را مجدداً بارگذاری کنید:
php artisan config:clear
یا در محیط Production:
php artisan config:cache
# PhpRedis چیست؟
یکی از Clientهای معروف Redis در PHP، افزونه PhpRedis است.
اگر از PhpRedis استفاده کنید، مقدار زیر را در .env قرار میدهید:
REDIS_CLIENT=phpredis
برای بررسی فعال بودن افزونه در PHP میتوانید اجرا کنید:
php -m | grep redis
اگر redis در خروجی نمایش داده شود، افزونه PHP Redis فعال است.
این نکته مهم است؛ چون ممکن است Redis Server روی سرور نصب و فعال باشد، اما PHP پروژه افزونه Redis را نداشته باشد.
در چنین شرایطی Redis از طریق redis-cli کار میکند، اما Laravel نمیتواند به آن متصل شود.
# PhpRedis یا Predis؟
Laravel امکان استفاده از Clientهای مختلف Redis را فراهم میکند.
دو نامی که بیشتر با آنها مواجه میشوید:
- PhpRedis
- Predis
PhpRedis
PhpRedis یک Extension برای PHP است.
مزیت مهم آن این است که در سطح PHP بهصورت Native Extension اجرا میشود.
Predis
Predis یک کتابخانه PHP برای ارتباط با Redis است که بدون نیاز به Extension مخصوص PHP قابل استفاده است.
در پروژههایی که کنترل کاملی روی سرور دارید، استفاده از PhpRedis معمولاً انتخاب مناسبی است؛ مخصوصاً زمانی که میتوانید Extension موردنیاز PHP را نصب کنید.
# تست اتصال Laravel به Redis
بعد از تنظیم Redis بهتر است اتصال Laravel را تست کنید.
یک روش ساده، استفاده از Tinker است:
php artisan tinker
سپس:
Redis::set('test_key', 'hello');
و بعد:
Redis::get('test_key');
اگر نتیجه زیر را دریافت کردید:
"hello"
یعنی Laravel توانسته با Redis ارتباط برقرار کند.
# کار با Redis در Laravel
Laravel امکان کار مستقیم با Redis را نیز فراهم کرده است.
برای مثال:
use Illuminate\Support\Facades\Redis;
Redis::set('username', 'saeed');
برای دریافت مقدار:
$username = Redis::get('username');
خروجی:
saeed
# ذخیره اطلاعات با Expiration
یکی از قابلیتهای مهم Redis امکان تعیین زمان انقضا برای دادهها است.
برای مثال:
Redis::setex('verification_code', 120, '123456');
در این مثال مقدار 123456 برای 120 ثانیه ذخیره میشود.
پس از پایان این زمان، Redis آن مقدار را منقضی میکند.
این قابلیت برای مواردی مانند:
- کد تأیید
- Token موقت
- Cache
- دادههای موقت
- محدودیت درخواست
بسیار کاربردی است.
# استفاده از Redis برای Cache در Laravel
یکی از مهمترین کاربردهای Redis در Laravel، Cache است.
برای مثال:
use Illuminate\Support\Facades\Cache;
Cache::put('site_name', 'CMSNevis', 3600);
در این مثال مقدار CMSNevis به مدت 3600 ثانیه در Cache ذخیره میشود.
برای دریافت:
$siteName = Cache::get('site_name');
# تنظیم Redis به عنوان Cache Store
برای اینکه Laravel از Redis برای Cache استفاده کند، میتوانید Store مربوط به Cache را روی Redis قرار دهید.
در نسخههای جدید Laravel، بسته به ساختار پروژه، تنظیم Cache Store در .env میتواند به شکل زیر باشد:
CACHE_STORE=redis
پس از آن:
Cache::put('products', $products, 3600);
میتواند داده را در Redis ذخیره کند.
# استفاده از Cache::remember
یکی از کاربردیترین روشهای Cache در Laravel، استفاده از remember است.
فرض کنید لیست محصولات را از دیتابیس دریافت میکنید:
$products = Cache::remember('products', 3600, function () {
return Product::latest()->get();
});
Laravel ابتدا بررسی میکند که آیا کلید products در Cache وجود دارد یا خیر.
اگر وجود داشته باشد:
Redis
↓
products
↓
Return
اگر وجود نداشته باشد:
Redis
↓
داده وجود ندارد
↓
MySQL
↓
Product::latest()->get()
↓
Redis
↓
Return
این الگو در پروژههای واقعی بسیار پرکاربرد است.
# حذف داده از Redis Cache
برای حذف یک Cache میتوانید از forget استفاده کنید:
Cache::forget('products');
مثلاً بعد از تغییر محصولات:
Product::create($data);
Cache::forget('products');
به این ترتیب Cache قبلی حذف میشود تا در درخواست بعدی اطلاعات جدید از دیتابیس دریافت شود.
# Redis برای Queue در Laravel
یکی دیگر از کاربردهای بسیار مهم Redis، استفاده بهعنوان Queue Driver است.
در مقاله قبلی درباره Queue توضیح دادیم که Laravel میتواند Jobها را به صف ارسال کند و Worker آنها را در پسزمینه پردازش کند.
Redis یکی از گزینههای بسیار مناسب برای این کار است.
برای استفاده:
QUEUE_CONNECTION=redis
در این حالت معماری کلی میتواند به شکل زیر باشد:
Laravel
↓
Dispatch Job
↓
Redis
↓
Queue Worker
↓
Execute Job
برای اجرای Worker:
php artisan queue:work
این روش برای پروژههایی که تعداد Jobهای زیادی دارند بسیار کاربردی است.
اگر میخواهید با مفهوم Queue و Job در Laravel بهصورت کامل آشنا شوید، مقاله «Queue در Laravel» در همین کلاستر مکمل این آموزش است.
# Redis برای Session
Laravel میتواند Sessionهای کاربران را نیز در Redis ذخیره کند.
این قابلیت در پروژههایی که چند Server یا چند Application Instance دارند میتواند بسیار مفید باشد.
بهعنوان مثال:
Load Balancer
│
┌─────────┴─────────┐
↓ ↓
Laravel Server 1 Laravel Server 2
│ │
└─────────┬─────────┘
↓
Redis
در چنین معماریای، Session میتواند در یک محل مشترک قرار داشته باشد و Application Serverهای مختلف به آن دسترسی داشته باشند.
# Redis Lock در Laravel چیست؟
یکی از قابلیتهای مهم Laravel، ایجاد Lock است.
فرض کنید یک Job یا درخواست نباید بهصورت همزمان توسط دو Worker اجرا شود.
میتوانید از Lock استفاده کنید:
$lock = Cache::lock('process-order', 10);
if ($lock->get()) {
try {
// عملیات
} finally {
$lock->release();
}
}
در این حالت تا زمانی که Lock فعال است، پردازش دیگری نمیتواند همان Lock را به دست بگیرد.
این قابلیت برای مواردی مانند:
- جلوگیری از اجرای دوباره یک عملیات
- پردازش سفارش
- Cronهای حساس
- عملیات مالی
- جلوگیری از Duplicate Processing
بسیار کاربردی است.
# Redis برای Counter
Redis برای شمارندهها نیز بسیار مناسب است.
برای مثال:
Redis::incr('page_views');
هر بار که این دستور اجرا شود مقدار یک واحد افزایش پیدا میکند.
برای کاهش:
Redis::decr('page_views');
این قابلیت میتواند برای مواردی مانند:
- تعداد بازدید
- تعداد درخواست
- شمارندههای موقت
- آمار لحظهای
استفاده شود.
# Redis و Rate Limiting
Redis به دلیل سرعت بالا و قابلیت عملیات Atomic میتواند در سیستمهای Rate Limiting نیز بسیار مفید باشد.
برای مثال میتوانید تعداد درخواستهای یک کاربر یا IP را در یک بازه زمانی کنترل کنید.
معماری کلی:
Request
↓
Laravel
↓
Redis Counter
↓
بررسی تعداد درخواست
↓
Allow / Block
این موضوع در APIها، سیستمهای Login و Endpointهای حساس اهمیت زیادی دارد.
# Redis چه تفاوتی با Cache معمولی دارد؟
گاهی تصور میشود Redis خودش همان Cache است.
در واقع Redis یک Data Store است و Cache فقط یکی از کاربردهای آن است.
یعنی:
Redis
├── Cache
├── Queue
├── Session
├── Lock
├── Counter
└── Temporary Data
بنابراین وقتی میگوییم:
> Laravel از Redis برای Cache استفاده میکند
منظور این نیست که Redis فقط برای Cache ساخته شده است.
# Redis در معماری یک پروژه Laravel
در یک پروژه متوسط یا بزرگ ممکن است معماری زیر را داشته باشیم:
Users
│
↓
Laravel
│
┌─────────────┼─────────────┐
↓ ↓ ↓
MySQL Redis Storage
│ │
│ ┌─────┼─────┐
│ ↓ ↓ ↓
│ Cache Queue Session
│ │
│ ↓
│ Workers
│
↓
Permanent Data
این معماری باعث میشود هر ابزار مسئولیت مناسب خودش را داشته باشد.
# Redis و Database چه زمانی باید استفاده شوند؟
یک قانون ساده میتواند این باشد:
اگر داده اصلی و دائمی است:
از دیتابیس استفاده کنید.
مثلاً:
users
orders
products
transactions
invoices
اگر داده موقت یا بسیار پرتکرار است:
Redis میتواند گزینه مناسبی باشد.
مثلاً:
cache
counters
locks
temporary tokens
queue
sessions
البته انتخاب نهایی همیشه به معماری پروژه بستگی دارد.
# نکات مهم استفاده از Redis در Production
استفاده از Redis در محیط Production نیازمند توجه به چند نکته مهم است.
Redis را روی اینترنت عمومی باز نکنید
یکی از اشتباهات خطرناک این است که پورت Redis یعنی 6379 بدون محدودیت روی Internet باز شود.
اگر Laravel و Redis روی یک سرور هستند، معمولاً میتوانید Redis را روی:
127.0.0.1
در دسترس نگه دارید.
اگر Redis روی سرور جداگانه قرار دارد، دسترسی را تا حد امکان به IP سرور Application محدود کنید.
مصرف RAM را کنترل کنید
از آنجا که Redis عمدتاً با RAM کار میکند، باید مصرف حافظه آن را کنترل کنید.
در Production مخصوصاً اگر Redis برای Cache، Queue و Session بهصورت همزمان استفاده شود، نظارت روی مصرف حافظه اهمیت زیادی دارد.
Cache را با داده اصلی اشتباه نگیرید
اطلاعات مهم و دائمی را فقط به این دلیل که Redis سریع است در Redis ذخیره نکنید.
مثلاً موجودی حساب کاربر یا تراکنش مالی نباید صرفاً در Redis نگهداری شود و دیتابیس اصلی کنار گذاشته شود.
برای چنین اطلاعاتی باید دیتابیس اصلی منبع حقیقت باشد.
# خطاهای رایج Redis در Laravel
خطای Connection refused
اگر Laravel نتواند به Redis متصل شود، ممکن است با خطایی شبیه این مواجه شوید:
Connection refused
در این حالت ابتدا وضعیت Redis را بررسی کنید:
sudo systemctl status redis-server
و سپس:
redis-cli ping
Redis Server اجرا نیست
اگر این دستور:
redis-cli ping
پاسخ مناسبی ندهد، ممکن است Redis اجرا نشده باشد.
میتوانید آن را راهاندازی کنید:
sudo systemctl start redis-server
و برای اجرای خودکار هنگام Boot:
sudo systemctl enable redis-server
افزونه Redis برای PHP نصب نیست
ممکن است Redis Server کاملاً سالم باشد ولی PHP Extension مربوط به Redis نصب نشده باشد.
بررسی:
php -m | grep redis
اگر چیزی نمایش داده نشد، باید Extension مناسب PHP را نصب و فعال کنید.
نکته مهم این است که Extension باید برای همان نسخه PHP مورد استفاده Laravel فعال شده باشد.
تغییر .env اما Laravel هنوز تنظیمات قبلی را دارد
اگر Configuration Cache شده باشد، تغییر .env همیشه بلافاصله در Application دیده نمیشود.
برای پاک کردن Configuration Cache:
php artisan config:clear
و برای ساخت مجدد Configuration Cache در Production:
php artisan config:cache
# Redis یا Database برای Cache؟
هر دو میتوانند برای Cache استفاده شوند، اما Redis معمولاً برای پروژههایی که نیاز به سرعت بالا و عملیات Cache بیشتر دارند گزینه قدرتمندتری است.
| ویژگی | Database Cache | Redis |
|---|---|---|
| سرعت | خوب | بسیار بالا |
| نیاز به RAM | کمتر | بیشتر |
| نصب جداگانه | معمولاً ندارد | دارد |
| مناسب پروژه بزرگ | بسته به شرایط | بسیار مناسب |
| Queue | محدودتر | بسیار مناسب |
| Counter | معمولی | بسیار مناسب |
| Lock | قابل استفاده | بسیار مناسب |
انتخاب مناسب به حجم پروژه و معماری آن بستگی دارد.
# آیا هر پروژه Laravel به Redis نیاز دارد؟
خیر.
برای یک پروژه کوچک ممکن است استفاده از Redis اصلاً ضروری نباشد.
مثلاً اگر یک سایت ساده با تعداد کاربران کم دارید، استفاده از Redis ممکن است پیچیدگی غیرضروری ایجاد کند.
اما وقتی پروژه به سمت موارد زیر میرود:
- کاربران زیاد
- درخواستهای زیاد
- Cache سنگین
- Queue
- Jobهای زیاد
- چند Application Server
- Session مشترک
- Rate Limiting
- پردازشهای همزمان
استفاده از Redis ارزش بیشتری پیدا میکند.
# Redis در پروژههای Laravel چه زمانی واقعاً ارزشمند میشود؟
فرض کنید یک فروشگاه اینترنتی دارید و صفحه محصولات در هر دقیقه هزاران بار مشاهده میشود.
بدون Cache:
1000 Request
↓
1000 Query
↓
MySQL
با Redis Cache:
1000 Request
↓
Redis
↓
اکثر درخواستها بدون Query
↓
MySQL فقط هنگام نیاز
در این شرایط Redis میتواند فشار روی دیتابیس را بهشکل قابل توجهی کاهش دهد.
البته Cache کردن بدون طراحی درست میتواند باعث نمایش داده قدیمی شود؛ بنابراین Cache Invalidation نیز بخش مهمی از طراحی سیستم است.
# نکات مهم در طراحی Redis در Laravel
هنگام استفاده از Redis بهتر است چند اصل را رعایت کنید.
1. کلیدهای Cache را منظم انتخاب کنید
مثلاً:
products:latest
products:category:12
user:25:profile
settings:site
این کار مدیریت Cache را سادهتر میکند.
2. برای دادههای موقت TTL تعیین کنید
بهجای نگهداری بینهایت داده:
Cache::put('temporary_data', $data, 600);
3. Cache را بعد از تغییر داده Invalidate کنید
مثلاً بعد از تغییر محصول:
Cache::forget('products:latest');
4. Redis را جایگزین دیتابیس اصلی نکنید
Redis باید در معماری مناسب خودش استفاده شود.
5. Redis را از اینترنت عمومی محافظت کنید
پورت 6379 را بدون نیاز و محدودیت در معرض اینترنت قرار ندهید.
# Redis و Laravel Horizon
اگر از Redis برای Queue در Laravel استفاده میکنید، ابزار مهم دیگری به نام Laravel Horizon وجود دارد.
Horizon برای مدیریت و مانیتور کردن Queueهای Redis در Laravel طراحی شده است.
با Horizon میتوانید اطلاعاتی مانند:
- وضعیت Workerها
- Jobهای پردازششده
- Jobهای Failed
- تعداد Jobها
- زمان پردازش
- Queueهای مختلف
را بهتر مشاهده و مدیریت کنید.
بنابراین در پروژههایی که Queue و Redis نقش جدی دارند، Horizon میتواند ابزار بسیار ارزشمندی باشد.
# یک مثال واقعی: Cache محصولات
فرض کنیم یک فروشگاه Laravel داریم.
میخواهیم آخرین محصولات را Cache کنیم:
use App\Models\Product;
use Illuminate\Support\Facades\Cache;
$products = Cache::remember(
'products:latest',
3600,
fn () => Product::latest()->take(20)->get()
);
بار اول:
Laravel
↓
Cache
↓
وجود ندارد
↓
Database
↓
Products
↓
Redis
در درخواستهای بعدی:
Laravel
↓
Redis
↓
Products
اگر محصول جدیدی اضافه کنیم، میتوانیم Cache را پاک کنیم:
Cache::forget('products:latest');
در درخواست بعدی، Laravel دوباره اطلاعات جدید را از دیتابیس دریافت و Cache میکند.
# آیا Redis فقط برای پروژههای خیلی بزرگ است؟
خیر.
Redis میتواند در پروژههای کوچک هم استفاده شود، اما سؤال اصلی این است که آیا ارزش پیچیدگی اضافهشده را دارد یا نه.
برای یک پروژه ساده:
Laravel + MySQL
ممکن است کاملاً کافی باشد.
برای یک پروژه متوسط:
Laravel + MySQL + Redis
میتواند انتخاب بسیار خوبی باشد.
برای یک سیستم بزرگ:
Load Balancer
↓
Laravel Servers
↓
MySQL
↓
Redis
↓
Queue Workers
↓
Horizon
میتوان Redis را به بخش مهمی از معماری تبدیل کرد.
# جمعبندی
Redis یک ذخیرهساز داده بسیار سریع است که میتواند در کنار Laravel برای کاربردهای مختلفی استفاده شود.
مهمترین کاربردهای Redis در Laravel عبارتاند از:
- Cache
- Queue
- Session
- Lock
- Counter
- Rate Limiting
- دادههای موقت
نکته مهم این است که Redis قرار نیست جای MySQL یا PostgreSQL را بگیرد.
دیتابیس اصلی باید مسئول نگهداری دادههای دائمی و مهم باشد و Redis میتواند برای دسترسی سریع، پردازش پسزمینه و دادههای موقت در کنار آن قرار بگیرد.
اگر پروژه Laravel شما در حال رشد است، یادگیری Redis یکی از مهارتهای مهم برای ورود به مباحث Performance، Queue و معماری حرفهای Laravel خواهد بود.
# سوالات متداول
Redis در Laravel چیست؟
Redis یک Data Store سریع و مبتنی بر حافظه است که Laravel میتواند از آن برای Cache، Queue، Session، Lock و کاربردهای دیگر استفاده کند.
آیا Redis جایگزین MySQL است؟
خیر. Redis و MySQL معمولاً نقش متفاوتی دارند. MySQL برای دادههای اصلی و دائمی و Redis بیشتر برای دادههای سریع، موقت و پردازشهای خاص استفاده میشود.
آیا برای استفاده از Redis باید آن را روی سرور نصب کنیم؟
بله، برای استفاده واقعی از Redis باید یک Redis Server در محیط اجرای پروژه در دسترس باشد؛ مگر اینکه از یک سرویس Redis مدیریتشده استفاده کنید.
پورت پیشفرض Redis چیست؟
پورت پیشفرض Redis معمولاً 6379 است.
PhpRedis چیست؟
PhpRedis یک Extension برای PHP است که امکان ارتباط PHP با Redis را فراهم میکند.
آیا Laravel بدون Redis کار میکند؟
بله. Redis برای همه پروژههای Laravel ضروری نیست و Laravel میتواند بدون آن نیز بهخوبی اجرا شود.
Redis در Laravel بیشتر برای چه کاری استفاده میشود؟
دو مورد بسیار رایج، Cache و Queue هستند. علاوه بر این، Redis برای Session، Lock، Counter و Rate Limiting نیز کاربرد دارد.
آیا Redis امن است؟
Redis میتواند بهشکل امن استفاده شود، اما نباید بدون تنظیمات امنیتی مناسب مستقیماً روی اینترنت عمومی قرار گیرد. مخصوصاً باید دسترسی به پورت Redis محدود شود.





