Menggunakan Redis Sebagai Queue Driver di Laravel
Bagi yang sudah lama menggunakan Laravel sebagai framework sehari-hari, biasanya pernah menggunakan Events, Notifications, Jobs atau Broadcasting. Secara bawaan Laravel menjalankan itu semua tidak menggunakan sistem antrian (Queue).
Sistem antrian (Queue) sendiri mempunyai manfaat. Secara sederhananya kita tidak perlu menunggu proses menjalankan sebuah Event, Notification atau Job sampai selesai. Dengan kata lain proses menjalankan itu semua dibalik layar.
Jadi proses-proses yang akan dijalankan tadi ditampung dalam antrian (Queue) kemudian akan dijalankan satu per satu sesuai prioritasnya.
Laravel memberikan kita pilihan koneksi yang digunakan untuk antrian (Queue), yaitu :
- Sync
- Database
- Beanstalkd
- Sqs
- Redis
Dalam kesempatan ini saya akan memberi contoh menggunakan Redis sebagai database atau driver antrian (Queue).
Memasang Redis
Langkah paling penting adalah mengecek apakah Redis sudah terpasang di komputer atau laptop kita. Caranya jalankan perintah dibawah ini di Terminal.
redis-cli ping
Apabila hasil outputnya PONG berarti redis sudah terpasang di komputer atau laptop kita.
Bagaimana jika Redis belum terpasang?
Dikarenakan saat ini saya setiap hari menggunakan Macbook Air maka saya hanya mencontohkan cara memasang Redis di sistem operasi Mac OS.
brew update
brew install redis
Jalan perintah tersebut di Terminal. Kemudian jika sudah selesai, cek kembali apakah Redis sudah benar-benar terpasang dengan cara diatas.
Perlu diketahui dari perintah diatas, saya menggunakan Brew sebagai Package Manager di Mac OS. Untuk lebih jelas lagi mengenai Brew, silakan kunjungi websitenya.
Memasang PHP Package predis/predis
Predis/predis ini merupakan Redis Client yang akan digunakan. Secara bawaan pengaturan, Laravel menggunakan PhpRedis yaitu sebuah ekstensi PHP via PECL.
Dikarenakan memasang PhpRedis lebih rumit maka dokumentasi Laravel memberikan alternatif menggunakan predis/predis via composer.
Before using Redis with Laravel, we encourage you to install and use the PhpRedis PHP extension via PECL. The extension is more complex to install but may yield better performance for applications that make heavy use of Redis.Alternatively, you can install thepredis/predis
package via Composer:
Bagaimana memasang predis/predis di Laravel?
composer install predis/predis
Jalan perintah tersebut di Terminal dan pastikan didalam folder proyek Laravel yang telah disiapkan.
Selanjutnya kita perlu menambahkan pengaturan REDIS_CLIENT di file .env pada proyek Laravel.
REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Membuat Sebuah Notifikasi
Sebenarnya tidak harus notifikasi, terserah bisa menggunakan Event atau Job. Saat ini saya beri contoh sistem antrian (Queue) dengan menggunakan Notifikasi.
Jalankan perintah dibawah ini di Terminal dan pastikan didalam folder proyek Laravel.
php artisan make:notification UserRegistered
Perintah diatas akan menghasilkan sebuah folder App\Notifications dengan sebuah file UserRegistered.php didalamnya.
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class UserRegistered extends Notification
{
use Queueable;
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hai!')
->line('Selamat! Anda sudah terdaftar sebagai pengguna.')
->line('Jangan lupa segera login ya...!')
->salutation('Terima kasih');
}
}
Kelas UserRegistered ini dibuat untuk mengirim sebuah email ke pengguna yang baru saja mendaftarkan diri.
Perlu diketahui, saat membuat kelas notifikasi, kelas tersebut belum mengimplementasi sistem atrian (Queue). Maka dari itu perlu menambahkan sedikit kode didalamnya.
class UserRegistered extends Notification implements ShouldQueue
Jadi cukup dengan menambahkan implement ShouldQueue maka notifikasi dijalankan dalam antrian.
Menjalankan Queue Worker
Sebelum mengirim notifikasi ke pengguna, pastikan dulu Queue Worker dijalankan di lokal komputer atau laptop.
php artisan queue:work
Perlu diingat! Cara ini hanya digunakan di lokal komputer atau laptop kita. Apabila proyek Laravel sudah dalam fase produksi maka caranya pun beda. Artinya proyek Laravel sudah ditempatkan di server baik Hosting atau VPS.
Mengirim Notifikasi
Langkah terakhir adalah mengirim notifikasi ke pengguna, hal ini sebagai bukti bahwa sistem antrian (Queue) berjalan dengan semestinya.
Saya buat contoh sederhana saja, menentukan User dan mengirim Notifikasi.
Route::get('register', function () {
$user = App\User::find(1);
$user->notify(App\Notifications\UserRegistered());
});
Tes Mengirim Notifkasi Email |
Bukti Email Berhasil Dikirim |
Sekian artikel cara menggunakan Redis sebagai Queue Driver atau Database di Laravel. Ini hanya contoh sederhana saja, kita bisa mengembangkan lagi lebih dari sekedar ini.
Semoga contoh yang sederhana ini bisa menjadi pintu pertama untuk memahami Queue di Laravel.
terima kasih informasinya, sangat membantu
BalasHapusTerima kasih kembali.
Hapus