Saya baru mempelajari tentang metode cache di laravel untuk lebih meningkatkan performance, salah satunya mengguanakan Cache di Laravel menggunakan Redis.
Catatan : Harap pastikan Redis sudah terinstall di local laptop anda, jika belum anda bisa install terlebih dahulu, karena yang akan kita bahas disini menggunakan Redis
Install predis
di laravel menggunakan composer
karena jika anda menggunakan phpredis
tidak mendukung serializer
nantinya :
composer require predis/predis
Baik sekarang kita akan benahi dulu file .env
kita ketika ingin mengubah menggunakan Redis dan Cache Laravel :
# Ubah cache driver menggunakan redis
CACHE_DRIVER=redis
# jika ada perubahan silahkan sesuaikan pengaturan redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Lalu sekarang ini sudah bisa kita gunakan di controller kita :
if (Cache::has('products')) {
$products = Cache::get('products');
} else {
$products = Cache::remember('products', now()->addMinute(), function() {
return Product::query()->orderBy('created_at', 'DESC')->get();
});
}
return view('product.index', ['product' => $products]);
Kenapa menggunakan if
karna ini akan kita cek terlebih dahulu ketika ada Cache dengan id products
maka akan kita tarik data tersebut
if (Cache::has('products')) {
$products = Cache::get('products');
}
Lalu bagian else
kita definisikan bahwa tidak ada id di redis
dengan nama products
dan kita bisa membuat cache tersebut dengan cara menariknya :
...
else {
$products = Cache::remember('products', now()->addMinute(), function() {
return Product::query()->orderBy('created_at', 'DESC')->get();
});
}
...
Jangan lupa dalam proses Create
, Update
dan Delete
ataupun create maka hapus cache nya agar nanti ketika ada data baru ataupun perubahan bisa muncul yang terbaru :
$product = Product::create(...);
Cache::forget('products');
Oke sekarang kita akan coba buka dengan aplikasi Redis GUI yaitu Medis App atau lainnya yang bisa anda gunakan. dan hasilnya kita akan dapatkan seperti ini