راهنمای فعال کردن ردیس (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 یکی از بهترین انتخابها برای کش در لاراول است.
سخن پایانی
در این پست آموزشی ، استفاده از کش ردیس را در لاراول مرور کردیم.
اگر شما برای استفاده از کش لاراول در پروژه خود نیاز به راهنمایی دارید و یا تجریه خاصی در این زمینه دارید می توانید هم در قسمت نظرات این پست و هم از طریق ارسال تیکت برای همکاران ما در بخش پشتیبانی ارسال کنید.