Back to blog
Backend

Cache Invalidation: Kenapa Admin Ganti Harga, Tapi Pembeli Lihat Harga Lama?

Ada dua hal tersulit di dunia IT: 'Memberi nama variabel, dan Menghapus Cache'. Kenapa data yang sudah di-update admin tidak langsung berubah di layar pembeli?

super admin·16 Juli 2026·2 min read
Cache Invalidation: Kenapa Admin Ganti Harga, Tapi Pembeli Lihat Harga Lama?
Article Content

Bayangin Kamu Liat Flash Sale Sepatu...

Bayangin Budi (sebagai Admin Toko Online) baru saja mengganti harga sepatu Jordan dari Rp 2 Juta menjadi Rp 500 Ribu untuk event Flash Sale. Budi menekan "Save". Tulisan di layar Dasbor Admin sukses bilang "Harga Berhasil Diperbarui".

Tapi di saat yang sama, jutaan pembeli yang membuka halaman sepatu tersebut masih melihat harga lama Rp 2 Juta! Pelanggan marah-marah di Twitter bilang promonya bohong. Budi mengecek Database SQL, harganya beneran udah berubah jadi 500 Ribu. Kok bisa layarnya beda dengan database-nya?

Masalahnya: Datanya 'Nyangkut' di Cache (Redis/CDN)

Seperti yang kita bahas di artikel Redis dan CDN, untuk melayani jutaan pembeli tanpa membuat server meledak, sistem Backend menggunakan Caching (Memori Cepat).

Sistem mengambil fotokopi harga "2 Juta" dari Database, lalu menyimpannya di RAM Redis (atau CDN Cloudflare) selama 15 Menit. Jika ada pembeli yang datang, sistem tidak ngecek ke Database lagi, ia cuma ngasih fotokopian harga dari Redis. Karena umurnya belum 15 menit, Redis belum sadar kalau harga aslinya di Database sudah berubah!

Nah, Di Sinilah Solusi 'Cache Invalidation' Masuk!

Di dunia Software Engineering, ada kutipan terkenal: "Hanya ada 2 hal tersulit di dunia IT: Memberi nama variabel, dan Cache Invalidation (Menghapus Cache)."

Untuk memperbaiki *error* memalukan ini, Backend Developer harus merancang sistem "Sapu Jagat" (Cache Invalidation) yang proaktif:

  • Skenario Benar: Saat Budi (Admin) menekan tombol "Save" harga baru di Dasbor, *Backend* tidak cuma meng-update tabel PostgreSQL.
  • *Backend* WAJIB menambahkan satu baris kode untuk mengetuk pintu Redis: redis.delete('sepatu_jordan_123').
  • Dengan perintah ini, fotokopian harga 2 Juta di Redis akan langsung dihancurkan (Evicted) saat itu juga.
  • Sehingga, saat pembeli berikutnya menekan Refresh, Redis yang kosong akan terpaksa "bertanya ulang" ke Database asli, dan akhirnya mendapatkan Harga Diskon 500 Ribu yang baru!

Intinya: Menaruh data ke dalam *Cache* itu gampang, tapi merancang arsitektur kapan saat yang tepat untuk "menghancurkan" *cache* tersebut agar pengguna tidak melihat data kadaluarsa adalah seni tingkat tinggi di *Backend*.

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates