اصلا ردیس چیه؟
ردیس یه سیستم اپن سورس بر اساس BSD license هست که میتونه به عنوان DB یا cache یا message broker استفاده بشه.
ردیس نوع دیتای string , list hash رو میتونه ساپورت کنه. توانایی ذخیره ساختار key-value از مزیت مهم ردیس هستش
ردیس رو با ANSI C نوشته روروی تمام سیستم عامل ها قابلیت نصب به عنوان dependancy دارد.
البته این نکته رو بگم نسخه offlical روی سیستم عامل windows ندارید و باید از ابزار های جانبی استفاده کنید.
1 - سرور ردیس نصب / راه اندازی
اول از همه اینو باید بدونید که ردیس مخصوص php یا لاراول نیست این سیستم باید جداگانه روی سرور نصب بشه. یعنی از ملزومات نصب روی سیستم عامله.
اینجا رو مطالعه کنید. (همراه قند شکن)
بعد با دستور redis-server اونو اجرا کنید
2 - نصب افزونه redis برای php
بعد نصب روی خود سیستم عامل شما نیاز دارید که افزونه اون نسخه از php که باهاش کار میکنید رو نصب کنید.
sudo apt-get install redis php8.1-redis
sudo systemctl restart php8.1-fpm.service
3 نصب پکیج predis
تا قبل این مرحله شما Redis رو روی سرور اماده سازی کردید.
این گام برای کانفیگ قسمت Client هست.
predis یکی از منعطف ترین پکیج Redis Client هست که باید با composer نصب کنید. البته میتونید از هر پکیجی استفاده کنید اما من این رو به شما پیشنهاد میدم.
composer require predis/predis
4 کانفیگ اولیه Redis
خوب تبریک میگم اگه تا این مرحله امدی یعنی همه قسمت های لازم رو انجام دادی و خوب پیش رفتی الان لازمه فقط کش فایل پیشفرض لاراول رو به Redis تغییر بدی.
اگه تنظیماتتون تو فایل env هست میتونید CACHE_STORE رو به redis تغییر بدید.
CACHE_STORE=redis
بقیه کانفیگ ها به شرط تغییر ندادن تنظیمات REDIS به این صورت میباشد.
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
تنظیمات فایل config/cache هم به این صورت میباشد.
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
5 چطوری با Redis کار کنیم؟
نکته اول اینکه هرجایی که نیاز با کار با Redis داریم باید Facade اون رو اضافه کنید
use Illuminate\Support\Facades\Redis;
Facade ردیس متد های مختفی داره که باید مستقیم به خود Redis وصل بشید. مثلا برای گرفتن دیتا با کلید خاص فقط لازمه از متد get('key') استفاده کنید
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function showProfile($id)
{
$user = Redis::get('user:profile:'.$id);
return view('company.employee', ['user' => $user]);
}
}