Sebelum menggunakan cache Redis dengan Laravel, ada dua cara untuk menggunakannya. Yaitu dengan menginstal ekstensi PHP PhpRedis
melalui PECL atau menginstal paket predis/predis
(~1.0) melalui Composer.
Instalasi
Dalam hal ini, saya akan menggunakan paket predis/predis
. Dengan metode ini kita tidak perlu menambahkan ekstensi PHP. Sehingga sebelum menggunakan Redis dengan Laravel kita perlu menginstall package melalui Composer dengan mengetik:
**composer** require predis/predis
Konfigurasi
Konfigurasi Redis untuk aplikasi Anda terletak di file config/database.php
. Di dalam file ini, Anda akan melihat array redis
yang berisi server Redis yang digunakan oleh aplikasi Anda:

Karena saya menggunakan paket 'predis'
sebagai 'client'
, jadi di sini saya langusung menetapkan'predis'
sebagai 'client'
. Jika Anda ingin menggunakan PhpRedis jadi setel sebagai 'phpredis'
. Atau Anda dapat mengaturnya di .env
seperti ini:
REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=it-is-an-our-secret
REDIS_PORT=6379
Implementasi
Untuk menggunakan Redis pada sebuah project Laravel, kita bisa menggunakan Cache facedade
atau Redis facedade
yang disediakan oleh Laravel. Dalam hal ini, saya akan membuat server saya mengingat data yang diambil dari database di Redis menggunakan metode Caching maka saya akan menggunakan Cache facedade
.
Pertama-tama, periksa kembali source code saya:

Kemudian, karena saya menggunakan Cache facedade
dari Laravel, saya perlu memanggilnya di bagian atas kode saya:
<?php
namespace App\\Http\\Controllers;
use Illuminate\\Support\\Facades\\DB;
use Illuminate\\Support\\Facades\\Cache; // <= seperti ini!
Karena saya ingin membuat Laravel mengingat data yang diambil, saya akan menggunakan metode Cache::remember
ini:

Fungsi ini memiliki 3 parameter:
users
adalah nama kunci untuk Redis,
$seconds
adalah berapa lama data disimpan,
function(){}
adalah fungsi yang mengembalikan data yang akan disimpan di Redis.
Dalam kasus ini, akan menjadi seperti ini:

Dengan kode ini, saya bermaksud untuk menyimpan tabel berita dari database ketiga saya di server Redis saya selama sekitar 2,5 jam.
Dan sekarang saatnya untuk mengujinya. Saya akan menggunakan insomnia.rest sekali lagi. Maka, inilah hasilnya:

Boom! Seperti yang Anda lihat, sekarang waktu response-time sekitar 330ms. Ini ± 195% lebih cepat dari sebelumnya.
Kesimpulan
Jadi, di Laravel terdapat fitur Caching secara build-in dan didukung oleh Redis. Redis menyimpan basis datanya sepenuhnya di memori, menggunakan disk hanya untuk persistensi. Sehingga tetap akan dapat response lebih lambat ketika data tidak ada di Redis. Selain itu juga, keterlambatan update data dari database pusat ke Caching Redis kita.
Bagaimana? Apakah Anda pernah menghadapi masalah serupa? Bagaimana Anda menyelesaikan masalah tersebut? Silakan berbagi hal tersebut di kolom Response 🙂 Terima kasih.