Setup Redis untuk Queue dan Cache Laravel
Redis di Laravel biasanya dipakai untuk mempercepat cache dan memproses queue dengan lebih stabil. Jawaban cepatnya: install Redis server, pasang ekstensi atau client Redis untuk PHP, isi .env, ubah CACHE_STORE dan QUEUE_CONNECTION, lalu jalankan queue worker dengan Supervisor.
Untuk pemula, Redis tidak wajib di semua project. Project kecil bisa mulai dari cache file dan queue database. Redis mulai berguna ketika aplikasi punya banyak job, cache sering dibaca, session aktif, atau traffic sudah lebih serius.
Kapan Perlu Redis?
Pertimbangkan Redis jika project kamu:
- memproses banyak job queue
- memakai cache untuk data yang sering dibaca
- punya fitur notifikasi, email massal, import, atau export
- butuh session yang lebih mudah dibagikan antar server
- ingin queue lebih cepat dibanding database queue
- mulai lambat karena query yang sama diulang terus
Untuk belajar production, Redis juga bagus karena memperkenalkan komponen server yang umum dipakai aplikasi Laravel nyata.
Gambaran Peran Redis
Redis adalah penyimpanan data di memory. Di Laravel, Redis sering dipakai sebagai:
Jangan anggap Redis sebagai pengganti database utama. Data penting seperti user, order, invoice, dan transaksi tetap disimpan di database seperti MySQL atau PostgreSQL.
Install Redis di Server
Di Ubuntu/Debian:
Cek status:
Jika sehat, redis-cli ping mengembalikan:
Siapkan Client Redis untuk Laravel
Laravel bisa memakai ekstensi PHP Redis atau package Predis. Untuk server production, ekstensi PHP Redis umum dipakai.
Install ekstensi sesuai versi PHP server:
Cek ekstensi:
Jika kamu tidak bisa memasang ekstensi, alternatifnya pakai Predis:
Lalu sesuaikan konfigurasi client di project jika diperlukan.
Konfigurasi .env
Contoh .env sederhana:
Jika project memakai versi Laravel yang masih memakai CACHE_DRIVER, ikuti key di .env.example project tersebut. Jangan mencampur nama key dari banyak versi tanpa mengecek konfigurasi project.
Setelah mengubah .env:
Untuk checklist environment lain, baca Laravel .env Production: Checklist Aman.
Contoh Cache dengan Redis
Kode Laravel tetap memakai facade cache biasa. Kamu tidak perlu memanggil Redis langsung untuk kasus sederhana.
Jika CACHE_STORE=redis, data cache ini disimpan di Redis. Jika nanti ingin kembali ke file, kode aplikasi tidak perlu berubah.
Contoh Queue dengan Redis
Setelah QUEUE_CONNECTION=redis, job yang di-dispatch akan masuk Redis:
Worker tetap dijalankan dengan perintah Laravel:
Di production, jangan menjalankan worker manual dari terminal. Gunakan Supervisor untuk Queue Laravel.
Contoh bagian command Supervisor:
Setelah deploy kode baru:
Cara Mengecek Redis Dipakai
Test koneksi dari Laravel:
Lalu:
Cek dari Redis CLI:
Untuk queue, dispatch satu job kecil, lalu cek:
Jangan terlalu sering memakai keys * di production besar karena bisa berat. Untuk aplikasi kecil dan debugging awal, perintah ini masih cukup membantu.
Kesalahan yang Sering Terjadi
Redis Server Belum Jalan
Jika Laravel tidak bisa terhubung, cek:
Pastikan service aktif sebelum mengubah kode Laravel.
Ekstensi PHP Redis Belum Terpasang
Jika REDIS_CLIENT=phpredis tetapi ekstensi belum ada, Laravel bisa error. Cek dengan:
Jika tidak ada output, install ekstensi atau gunakan Predis.
Lupa Menjalankan Worker
Mengubah QUEUE_CONNECTION=redis tidak otomatis memproses job. Queue tetap butuh worker yang hidup terus.
Cache Lama Membuat Perubahan Tidak Terbaca
Setelah mengubah .env, jalankan:
Kalau masih debugging, gunakan config:clear dulu agar nilai terbaru terbaca langsung.
Redis Dibuka ke Internet
Untuk setup sederhana, Redis sebaiknya hanya listen di 127.0.0.1. Jangan membuka port Redis publik tanpa keamanan yang benar.
Pencegahan
- Mulai dari queue database jika project masih kecil.
- Pakai Redis saat kebutuhan queue/cache sudah jelas.
- Pastikan Redis hanya bisa diakses dari server yang perlu.
- Jalankan queue worker dengan Supervisor.
- Pantau failed job setelah pindah ke Redis.
- Dokumentasikan perubahan
.envdan service server.
Bacaan Terkait
- Setup Supervisor untuk Queue Laravel
- Cara Menjalankan Scheduler Laravel di Production
- Laravel
.envProduction: Checklist Aman - Cara Deploy Laravel ke VPS
- Setup Nginx + PHP-FPM untuk Laravel
FAQ
Apakah Laravel wajib memakai Redis?
Tidak. Redis berguna untuk cache, queue, session, dan rate limit, tetapi project kecil bisa berjalan dengan driver file atau database.
Lebih baik Redis queue atau database queue?
Database queue lebih mudah untuk awal. Redis queue biasanya lebih cepat dan lebih cocok saat job mulai banyak.
Apakah Redis menggantikan MySQL?
Tidak. Redis dipakai untuk data sementara, antrean, cache, atau session. Data utama aplikasi tetap disimpan di database relasional.
Kenapa job masuk Redis tetapi tidak diproses?
Biasanya worker belum berjalan, Supervisor belum dikonfigurasi, atau worker memakai queue connection yang berbeda.
Apakah Redis aman tanpa password?
Bisa aman jika hanya listen di localhost dan tidak bisa diakses dari luar server. Untuk setup lebih kompleks, gunakan proteksi tambahan sesuai kebutuhan infrastruktur.