Perbandingan Performa Tanpa Redis Cache vs Dengan Redis Cache di Spring Boot

Daftar Isi

Kali ini saya ingin membahas tentang bagaimana sih performa applikasi jika developer tidak mengimplementasikan caching atau sudah mengimplementasikan caching menggunakan redis cache di spring boot. Ini adalah sebuah tantangan di saat applikasi yang kita buat sudah mulai terasa lambat di karenakan banyaknya request yang masuk. 

Perlu di ketahui, jika kita tidak mengimplementasikan caching pada applikasi kita, maka setiap request yang masuk pastinya akan di proses ulang dari database yang dapat memperlambat performa applikasi. 

Mungkin saya ingin memberikan sedikit analogi agar teman-teman sekalian dapat lebih memahami bagaimana cara kerja caching. Karena bisa saja pembaca artikel ini mungkin sangat masih belum memahami soal konsep caching 😁.

Coba anda bayangkan jika anda mengunjungi sebuah website e-commerce dan anda akan mencari barang yang ingin anda beli, tetapi munculnya beberapa list barang akan memakan waktu yang lama bahkan berdetik detik sebelum daftar barang muncul di list applikasi. Ini mungkin akan sangat mempengaruhi pengalaman pengguna di sebabkan setiap kali anda melakukan pencarian baru, sistem harus mengambil data langsung dari database dan menghitung ulang harga serta menghitung stok yang tersedia. 

Nah, sekarang coba bayangkan gimana kalau kita menggunakan caching dengan redis. yaaa alih-alih mengambil data dari database setiap kali ada permintaan, mending kita simpan pencarian sebelumnya dalam cache bukan ? 

Mungkin seperti ini lah kira kira flownya : 

Perbandingan Performa Tanpa Redis Cache vs Dengan Redis Cache di Spring Boot

Jadi mari kita buktikan sama sama perbandingan performa tanpa redis cache vs dengan redis cache di Spring Boot. 

Btw, untuk keseluruhan code nya saya akan simpan di repository github saya ya. Di sini saya cuma ingin menjelaskan cara penggunaan redis serta implementasi di spring boot. Jadi jika teman teman ingin membuktikan sendiri, silahkan ambil code nya di repository yang telah saya sediakan dan jangan lupa untuk di pahamin code nya juga 😁. 

Mungkin saya ingin menjelaskan secara singkat saja tentang apa sih itu redis cache. 

Apa itu Redis

Remote Dictionary Server ( Redis ) merupakan teknik penyimpanan data berbasis in-memory yang biasanya sering di gunakan sebagai cache untuk mempercepat pengaksesan data dalam applikasi. Jadi di karenakan data di simpan di dalam memory, maka proses I/O akan jauh lebih cepat. 

Jadi sebelum mengimplementasikan redis di spring boot, pastikan redis sudah terinstal di komputer lokal anda ya. 

Berikut contoh jika anda sudah dapat menggunakan redis di local komputer : 

Perbandingan Performa Tanpa Redis Cache vs Dengan Redis Cache di Spring Boot

Di sini saya menggunakan Redis CLI untuk menjalankan perintah Redis dan melihat semua keys. Jika Anda mengetikkan perintah PING dan mendapatkan balasan PONG, itu berarti Redis sudah siap digunakan dan dapat diimplementasikan dalam aplikasi Spring Boot.

Implementasi Redis di Spring Boot

Btw untuk keseluruhan code dan bukti perbandingannya nya bisa anda lihat di repository github saya. 

Repository Github

Di sini saya ingin menjelaskan sedikit tentang dependency apa saja yang harus dipasang di proyek Spring Boot agar bisa menggunakan Redis.

Jika Anda melihat detail dua branch berbeda pada repository GitHub yang telah saya berikan, maka terdapat dua branch, yaitu :

  • no-branch : merupakan branch yang tidak mengimplementasikan redis
  • with-branch : merupakan branch yang sudah mengimplementasikan redis
Jika Anda memperhatikan kode dari branch with-branch, terdapat beberapa perbedaan dibandingkan dengan no-branch, seperti penambahan dependency Spring Data Redis serta beberapa anotasi di dalam class service yang digunakan untuk mengimplementasikan Redis cache.

bisa anda lihat pada file pom.xml : 

Perbandingan Performa Tanpa Redis Cache vs Dengan Redis Cache di Spring Boot

dan juga ada beberapa annotasi tambahan di class service agar cache redis dapat berjalan dengan baik.

Perbandingan Performa Tanpa Redis Cache vs Dengan Redis Cache di Spring Boot

@Cacheable(value = "products" key = "'all'") di gunakan untuk menyimpan hasil query ke dalam cache dengan key all. 

@CacheEvict(value = "products", allEntries = true) di gunakan untuk memperbarui cache jika ada perubahan atau penambahan data ke dalam database. 

Sebenarnya, masih ada beberapa anotasi lain yang bisa digunakan untuk mengimplementasikan Redis cache di Spring Boot. Namun, di sini saya hanya menjelaskan beberapa saja. Untuk informasi lebih lanjut, Anda bisa mengeksplorasinya langsung di situs resminya : di sini

Mungkin hanya ini yang bisa saya jelaskan. Untuk melihat seluruh kode dan pembuktian performa, Anda dapat merujuk ke README.md di repository GitHub yang telah saya sediakan.

Terima kasih! Jangan lupa bagikan artikel ini jika bermanfaat! 😊

Posting Komentar