لطفا صبر کنید ...

چگونه از ردیس برای صف بندی (Queuing) در لاراول ۵ استفاده کنیم؟

الهه قنبری

توسط الهه قنبری

دیدگاه ها: 0
بازدید ها : 205
رایگان
هدف ما این است که شما، در بالاترین سطح طراحی و توسعه وب باشید.

ثبت نام کنید

در مقاله ‌آموزشی امروز در لیداوب، چگونگی استفاده از ردیس برای عملیات Queuing در لاراول ۵ را با هم می‌آموزیم. با ادامه این مقاله همراه ما باشید.


ردیس چیست؟

 مقاله مرتبط:

Redis یک حافظه in-memory است اما در پایگاه داده دیسک قرار دارد و سرعت ارسال و خواندن اطلاعات در آن بسیار زیاد است. این نوع حافظه دارای محدودیت در مجموعه داده‌ها است، به این صورت که داده‌ها نمی‌توانند بزرگتر از حافظه باشند. زمانی که داده‌ها بزرگتر از حافظه باشند، داده‌ها با پایگاه داده SQL مبادله می‌‌شوند. در برخی از موارد، این موضوع می‌تواند سرعت بالایی را برای پردازش سیستم کلی به ارمغان بیاورد.

به عنوان یک مثال، اکثر مردم درباره یک پست خاص نظر داده یا آن را لایک می‌کنند. در این صورت، درخواست‌های همزمان متعددی به سرور ارسال می‌شود و سرور تمام آن‌ها را همزمان و با سرعت بالا پردازش می‌کند؛ زیرا دسترسی به پایگاه داده نیاز به زمان کمتری در عملیات پردازش دارد.

استفاده از ردیس در لاراول

روش دیگری که توسعه دهندگان می‌توانند از آن استفاده کنند، قرار دادن (pushing) درخواست‌ها در صف است، با این کار می‌توانند صفحه آپدیت شده را حتی در حالی که پایگاه داده آپدیت نشده است، نمایش دهند. سپس، پس از یک فاصله از پیش تعیین شده، job‌ها در صف شروع به اجرا کرده و پایگاه داده آپدیت می‌شود.

در این آموزش ما از لاراول 5.5، php 7.1 ،mysql استفاده کرده‌ایم. فرض می‌کنیم که شما یک اپلیکیشن لاراول نصب شده بر روی وب سرور خود دارید.

ما یک برنامه لاراول بر روی سرور مدیریتی Cloudways نصب کرده‌ایم. اگر شما در Cloudways حساب کاربری ندارید، می‌توانید به صورت رایگان در آن ثبت نام کنید و مطابق GIF زیر سرور و برنامه را تنها با چند کلیک راه اندازی کنید.

ایجاد حساب کاربری در Cloudways

نصب و راه اندازی Redis در لاراول

Cloudways امکان نصب راحت Redis را فراهم می‌کند. برای شروع، به برگه Server Management بروید و بر روی Setting & Packages کلیک کنید. سپس به برگه Packages بروید و روی دکمه install که در جلوی Redis قرار دارد، کلیک کنید. پس از اتمام کار، صفحه زیر نمایش داده خواهد شد.

ایجاد حساب کاربری در Cloudways

تست سرعت لود و میزان استفاده از حافظه

بهترین گزینه برای تست سرعت لود، میزان استفاده از حافظه و تعداد کوئری‌ها، Laravel Debugbar است. ابتدا این پکیج را از طریق دستور کامپوزر زیر نصب می‌کنیم:

1. composer require barryvdh/laravel-debugbar

نصب Predis

قبل از استفاده از Redis به همراه لاراول، پکیج Predis را از طریق دستور کامپوزر زیر نصب می‌کنیم:

1. composer require predis/predis

تغییرات مورد نیاز در پروژه

اطمینان حاصل کنید که composer.json که در دایرکتوری ریشه قرار دارد شامل موارد مورد نیاز پکیج برای Redis است.

1. "require": {
2. 
3. ''',
4. 
5. ''',
6. ''',
7. "predis/predis":"~1.0",
8. ''',
9. '''
10. },

در هنگام توسعه کد بر روی Git ابتدا مطمئن شوید که پروژه خالی را اجرا می‌کنید و دستور composer install/update را قبل از توسعه کد اجرا کنید.

برای ایجاد تغییرات، فایل .env که در دایرکتوری ریشه پروژه قرار دارد را باز کنید و تنظیمات زیر را تغییر دهید:

1. CACHE_DRIVER=redis
2. 
3. SESSION_DRIVER=redis
4. 
5. QUEUE_DRIVER=redis

سپس، فایل queue.php در directory /config را باز کنید و تغییرات زیر را انجام دهید.

1. 'default' => env('QUEUE_DRIVER', 'redis'),

سپس، در فایل session.php به صورت زیر عمل کنید:

1. 'driver' => env('SESSION_DRIVER', 'redis'),

شما همچنین باید چندین تغییر در کد خود نیز داشته باشید و کلاس Redis را در آن فراخوانی کنید. در هر فراخوانی، شما باید مکان را به صورت زیر اعلان کنید:

1. use Illuminate\Support\Facades\Redis;

شما می‌توانید از توابع برای ایجاد صف‌ها استفاده کنید، برای مثال ما کد خود را در routes.php به صورت زیر پیکربندی کرده‌ایم:

1. Route::get('/', function () {
2. 
3. $queue = Queue::push('LogMessage',array('message'=>'Time: '.time()));
4. 
5. return $queue;
6. 
7. });
8. 
9. 
10. 
11. class LogMessage{
12. 
13. public function fire($job, $date){
14. 
15. File::append(app_path().'/queue.txt',$date['message'].PHP_EOL);
16. 
17. $job->delete();
18. 
19. }
20. 
21. }

زمانی که کد را در route/web وارد کردید، می‌توانید دستور php artisan را اجرا کرده و با رفرش کردن صفحه، خروجی برنامه را بررسی کنید.

استفاده از ردیس برای صف بندی در لاراول

اکنون، ما یک اسکریپت Redis-benchmark را اجرا می‌کنیم.

1. redis-benchmark -q -n 1000 -c 10 -P 5

نتایج به صورت زیر خواهد بود:

استفاده از ردیس برای صف بندی عملیات در لاراول

لاراول به صورت پیش‌فرض درایور صف SYNC را ارائه می‌کند که نیازی به نصب ندارد و تغییری در کد شما ایجاد نمی‌کند اما اگر شما از تنظیمات بالا سوئیچ می‌کنید، باید تغییرات زیر را در آن انجام دهید.
می‌توانید از فایل .env که در دایرکتوری ریشه پروژه قرار دارد این تنظیمات را تغییر دهید:

1. CACHE_DRIVER=sync
2. 
3. SESSION_DRIVER=sync
4. 
5. QUEUE_DRIVER=sync

همچنین، در فایل queue.php در directory /config تغییرات زیر را انجام دهید:

1. 'default' => env('QUEUE_DRIVER', 'sync'),

توجه کنید که اگر دستور lrange را در رابط خط فرمان redis اجرا کنید، هیچ job ورودی به صف را مشاهده نمی‌کنید (زیرا درایور SYNC تمام آن‌ها را مدیریت می‌کند).

سایر مقالات ما در لیداوب:

امیدوارم این مقاله نیز برای شما مفید باشد و بتوانید از آن در ساخت اپلکیشن‌های تحت وب خود با فریم ورک لاراول بهره ببرید. با سایر مقالات کاربردی لاراول ما در لیداوب همراه باشید.

5 از 2 رای

 مطالب مرتبط  

در قسمت زیر مطالبی وجود دارند که با مقاله فعلی مرتبط هستند



متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

برترین مطالب

آموزش در لیداوب

از مقالات و ویدیو های آموزشی خودتان کسب درآمد کنید!

جدیدترین سرویس ما برای دوستان متخصص و خوش بیان در زمینه طراحی وب ارائه شد. این سرویس به شما این امکان را می دهد که به آسانی مقالات و یا ویدیو های آموزشی خود را در لیداوب منتشر کنید. فرصت مناسبی است که بدون داشتن وب سایت و یا وبلاگ و مهم تر از همه بدون هزینه، مطالب خود را در لیداوب منتشر کنید و مهم تر از همه با فروش آنها کسب درآمد کنید. همین حالا شروع کنید و این فرصت استثنایی را از دست ندهید.