Iman Sugirman

Laravel Cache dengan Redis Gaskeun Bro

23 Maret 2022

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