امروز : ۲۷ فروردین ۱۴۰۴ (2025/04/16)

راهنمای فعال کردن ردیس (redis) در پروژه های لاراول

کش ردیس (redis)  یکی از سریع ترین کش های قابل استفاده در پروژه های لاراول است که از رم  (ram)  برای ذخیره و کش کردن اطلاعات و نتیجه کوئری های پرتکرار استفاده می کند.

استفاده از کش ردیس برای لاراول

در پست قبلی پارس وب سرور (کش ردیس چیست و چه کاربردی دارد؟) در مورد دیتابیس ردیس و نحوه کار آن توضیحات کامل داده شد.

برای استفاده از کش ردیس، باید اکستنشن  redis  فعال باشد. از منوی  select php version  یکی از نسخه های php که با پروژه شما سازگار است انتخاب کنید  (آموزش تغییر ورژن php)  و از قسمت اکستنشن ها، اکستنشن  redis  را فعال کنید. (راهنمای فعال کردن اکستنشن ها در سی پنل)

برای فعال کردن ردیس باید به تب databases  در سی پنل مراجعه کنید و بر روی دکمه redis databases  کلیک کنید تا این دیتابیس بر روی هاست شما فعال شود.  (راهنمای کامل فعال کردن ردیس در سی پنل)

فعال کردن ردیس در هاست

بعد از نصب و فعال شدن ردیس در سی پنل، می توانید  از نمونه کد لاراول استفاده کنید و کش ردیس را در پروژه لاراولی خود اضافه کنید.

فعال کردن ردیس برای لاراول در سی پنل

لاراول یک پکیج داخلی  به نام predis برای Redis دارد.

بعد از فعالسازی ردیس، باید در فایل env.  تغییراتی ایجاد شود تا کش لاراول از دیتابیس ردیس استفاده کند که کد آن به شرح زیر است .

 


CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=null

 

 

بررسی فایل config/database.php

برای استفاده از ردیس، باید  پیکربندی Redis به‌درستی تنظیم شده است. بخش redis در config/database.php باید چیزی شبیه این باشد:


'redis' => [
    'client' => env('REDIS_CLIENT', 'predis'),

    'default' => [
        'host' => '127.0.0.1',
        'scheme' => 'unix',
        'path' => env('REDIS_HOST', '/home/fullstack/redis/redis.sock'),
        'database' => env('REDIS_DB', 0),
    ],
],

مقدار database مشخص می‌کند که لاراول از کدام دیتابیس Redis استفاده کند (۰ برای اصلی، ۱ برای کش).

 

بعد از فعال کردن ردیس و انجام تغییرات بالا، کش ردیس بر روی پروژه لاراولی شما فعال می شود و شما می توانید از کش پر سرعت ردیس در پروژه خود استفاده کنید.

 

در ادامه این پست، دستورات و کدهایی که مربوط به استفاده و تعامل با کش ردیس است را با هم بررسی می کنیم.

قبل از هر کاری، همیشه توصیه می شود از پروژه خود به  از سی پنل فول بک آپ تهیه کنید  . (آموزش تهیه فول بک آپ سی پنل)

همینطوز بهتر است اگر بر روی فایلی تغییراتی انجام می دهیم یک نسخه از فایل قبل از هر تغییری را دانلود و بر روی سیستم خود ذخیره کنیم تا در صورت نیاز امکان برگرداندن و برگشت به وضعیت قبلی وجود داشته باشد.

 

پاک کردن کش لاراول بعد از تغییرات

پس از تنظیمات  ، کش را با اجرای دستورات زیر در ترمینال در مسیر پروژه، پاک می کنیم:


php artisan config:clear
php artisan cache:clear

 

تست اتصال به Redis در لاراول

برای بررسی عملکرد Redis در لاراول، دستور زیر را اجرا می کنیم:

php artisan tinker

 

سپس در محیط tinker موارد زیر را تست کنید:


Cache::put('test_key', 'Hello Redis!', now()->addMinutes(5));
Cache::get('test_key');

 

مانیتورینگ Redis

برای مشاهده کلیدهای ذخیره‌شده در Redis می توانیم دستور زیر را در ترمینال وارد کنیم.


redis-cli KEYS *

 

برای بررسی مقدار یک کلید دستور زیر را در ترمینال وارد و اجرا  می کنیم  :


redis-cli GET test_key

 

برای مشاهده لاگ‌های مربوط به ردیس از این دستور در ترمینال استفاده می کنیم.


redis-cli monitor

 

یا اگر بخواهیم فقط دیتابیس کش Redis را پاک کنیم دستور زیر را در ترمینال اجرا می کنیم.


redis-cli FLUSHDB

FLUSHDB فقط دیتابیس مشخص‌شده را پاک می‌کند. برای پاک کردن همه دیتابیس‌ها از FLUSHALL استفاده کنید.

 

مزایای استفاده از کش Redis در لاراول

استفاده از Redis Cache در لاراول می‌تواند به بهینه‌سازی عملکرد، کاهش فشار روی دیتابیس و افزایش سرعت پاسخگویی برنامه کمک کند. در ادامه، برخی از مهم‌ترین مزایای استفاده از کش Redis در لاراول بررسی شده است:

۱. افزایش سرعت پردازش و پاسخگویی

Redis یک کش درون حافظه‌ای (In-Memory Cache) است که داده‌ها را به جای ذخیره روی دیسک، در RAM نگه می‌دارد. این باعث می‌شود که سرعت خواندن/نوشتن اطلاعات بسیار بیشتر از دیتابیس‌های سنتی باشد و عملیات سنگین و پرهزینه مانند Queryهای دیتابیس را کاهش دهد.

همینطور پاسخ‌دهی سریع‌تر در APIها و درخواست‌های کاربران را ممکن کند.

مثال: کش کردن نتیجه یک Query سنگین


$users = Cache::remember('users_list', now()->addMinutes(10), function () {
return DB::table('users')->get();
});

در این مثال، اگر کوئری قبلا اجرا شده باشد، نتیجه از Redis Cache گرفته می‌شود و نیازی به اجرای مجدد کوئری نیست.

۲. کاهش بار روی دیتابیس و افزایش عملکرد

در پروژه های بزرگ، اجرای Queryهای مکرر و پیچیده روی دیتابیس می‌تواند باعث افزایش زمان پاسخگویی (latency) و بار سرور شود. با استفاده از کش Redis، می‌توان نتایج کوئری‌های پرتکرار را در حافظه نگه داشت.

با این کار، درخواست‌های مشابه از کش پاسخ داده شده و نیاز به اجرای مجدد کوئری در دیتابیس کاهش یابد و  باعث افزایش مقیاس‌پذیری (Scalability) برنامه شود.

مثال: کش کردن تعداد کاربران برای کاهش تعداد Query‌ها


$userCount = Cache::remember('users_count', now()->addHours(1), function () {
return DB::table('users')->count();
});

۳. بهبود عملکرد API و صفحات وب

APIهایی که حجم زیادی از داده را پردازش می‌کنند، می‌توانند با استفاده از کش عملکرد بهتری داشته باشند.

مثال: کش کردن پاسخ یک API برای جلوگیری از پردازش‌های تکراری



$products = Cache::remember('api_products', now()->addMinutes(30), function () {
return Product::all();
});
return response()->json($products);

این کار باعث می‌شود که درخواست‌های API سریع‌تر پاسخ داده شوند و سرور کم‌تر درگیر پردازش شود.

 

۴. مدیریت سشن‌ها در لاراول

لاراول به‌صورت پیش‌فرض سشن‌ها را در فایل یا دیتابیس ذخیره می‌کند، اما ذخیره سشن‌ها در Redis باعث افزایش سرعت می‌شود.

فعال‌سازی Redis برای سشن در .env


SESSION_DRIVER=redis

این کار باعث خواندن و نوشتن سریع‌تر اطلاعات سشن کاربران می شود و در نتیجه ، بهبود عملکرد در سیستم‌های با ترافیک بالا را در پی خواهد داشت.

 

۵. بهبود مدیریت صف‌ها (Queues)

در لاراول، Queueها برای انجام پردازش‌های پس‌زمینه (مثل ارسال ایمیل، پردازش فایل و…) استفاده می‌شوند.
Redis یک درایور سریع و کارآمد برای صف‌هاست که جایگزین دیتابیس می‌شود.

فعال‌سازی Redis برای Queue در .env


QUEUE_CONNECTION=redis

اجرای کارگر صف:


php artisan queue:work --queue=default

ابن مورد باعث  افزایش سرعت پردازش کارهای صف و  کاهش تاخیر در اجرای وظایف پس‌زمینه می شود و باعث  استفاده بهینه از منابع سرور می شود.

۶. کش کردن Route‌ها و View‌ها

کش کردن Route‌ها


php artisan route:cache

این کار باعث افزایش سرعت لود مسیرها (Route‌ها) در اپلیکیشن می‌شود.

کش کردن Viewها


php artisan view:cache

این دستور باعث می‌شود که Blade Templates کامپایل شده و سریع‌تر اجرا شوند.

۷. پشتیبانی از Expiry Time و حذف خودکار داده‌ها

یکی از ویژگی‌های Redis نسبت به کش‌های دیگر، تنظیم زمان انقضا (TTL) برای داده‌ها است. این قابلیت باعث می‌شود که داده‌ها بعد از مدت مشخصی به‌طور خودکار حذف شوند.

مثال: تنظیم زمان انقضا برای داده‌های کش شده


Cache::put('user_data', $data, now()->addMinutes(30));

مثال: کش کردن برای همیشه (بدون انقضا)


Cache::forever('app_settings', $settings);

حذف کش به‌صورت خودکار پس از مدت مشخص


Cache::put('discount_code', 'SALE2024', now()->addHours(2));

این کار باعث می‌شود که کد تخفیف بعد از ۲ ساعت به‌طور خودکار حذف شود.

 

۸. امکان پاک کردن کش به‌صورت دستی

اگر بخواهیم داده‌های کش شده را پاک کنیم، می‌توانیم از روش‌های زیر استفاده کنیم:

پاک کردن کش لاراول


php artisan cache:clear

پاک کردن کش خاص در کد PHP


Cache::forget('users_list');

پاک کردن کل دیتابیس کش در Redis


redis-cli FLUSHDB

استفاده از Redis Cache در لاراول مزایای زیر را دارد:

  • افزایش سرعت پردازش و پاسخگویی
  • کاهش بار روی دیتابیس
  • بهبود عملکرد API و صفحات وب
  • مدیریت بهتر سشن‌ها و صف‌های پردازشی
  • بهینه‌سازی استفاده از منابع سرور

اگر برنامه شما ترافیک بالا دارد و به عملکرد سریع و مقیاس‌پذیر نیاز دارد، Redis یکی از بهترین انتخاب‌ها برای کش در لاراول است.

 

سخن پایانی

در این پست آموزشی ، استفاده از کش ردیس را در لاراول مرور کردیم.

اگر شما برای استفاده از کش لاراول در پروژه خود نیاز به راهنمایی دارید و یا تجریه خاصی در این زمینه دارید می توانید  هم در قسمت نظرات این پست و هم از طریق ارسال تیکت برای همکاران ما در بخش پشتیبانی ارسال کنید.

4.6/5 - (14 امتیاز)
نظر و تجربیات خودتون رو درباره راهنمای فعال کردن ردیس (redis) در پروژه های لاراول با ما به اشتراک بگذارید

نشانی ایمیل شما منتشر نخواهد شد.
* بخش‌های موردنیاز علامت‌گذاری شده‌اند