This is the Trace Id: 9837ff933c83da36406e91b1e15fe64f
Lompati ke konten utama
Azure
latar belakang gradien

Apa itu penyimpanan di cache?

Pelajari bagaimana penyimpanan di cache meningkatkan performa dan efisiensi sistem.

Arti penyimpanan di cache

Penyimpanan di cache menyimpan salinan data yang dapat digunakan kembali dan sering diakses di memori agar aplikasi menghindari pengulangan panggilan database dan menampilkan hasil lebih cepat.

Poin utama

  • Penyimpanan di cache menyimpan data yang sering diminta di dalam memori cepat agar aplikasi dapat merespons lebih cepat tanpa harus selalu mengakses database utama.
  • Permintaan biasanya memeriksa cache terlebih dahulu, lalu mengambil dari sumber data saat tidak ada dalam cache, dan memperbarui cache menggunakan pola baca/tulis umum.
  • Jika diterapkan dengan baik, penyimpanan di cache mengurangi latensi dan beban backend, membantu menangani lonjakan lalu lintas, dan mendukung skenario umum seperti situs web, API, dan keadaan sesi.
  • Penyimpanan di cache muncul pada beberapa lapisan, dan hasil terbaik didapat saat memilih data yang stabil dan sering dibaca serta menjaga sumber kebenaran yang tahan lama dengan rencana cadangan.

Memahami penyimpanan di cache

Apa itu cache?

Penyimpanan di cache adalah praktik menyimpan data kunci-nilai di memori sementara (seperti bahasa kueri terstruktur nonrelasional database (NoSQL)) agar aplikasi dapat mengambilnya lebih cepat dibandingkan penyimpanan konvensional. Di arsitektur penyimpanan cloud—di mana permintaan sering melintasi jaringan dan menggunakan layanan bersama—penyimpanan di cache dapat membantu menjaga waktu respons tetap rendah dan mengurangi pekerjaan berulang.

Bagaimana cara kerja penyimpanan di cache?

Sebagian besar sistem menyimpan “sumber kebenaran” yang tahan lama (database) untuk himpunan data lengkap, lalu menyimpan cache untuk subset sementara yang sering dibaca. Saat permintaan masuk, aplikasi memeriksa cache terlebih dahulu; jika data ada, hasil dikembalikan dengan cepat tanpa perlu mengakses backend lagi. Pengembang juga menyimpan data yang sudah diproses di cache dan menggunakannya kembali untuk melayani permintaan lebih cepat dibandingkan kueri standar ke database relasional, database SQL, atau database PostgreSQL sumber terbuka.

Prinsip utama di balik penyimpanan di cache

1. Cache data yang sering Anda baca

Kandidat yang baik mencakup data yang dibaca berulang kali dan data yang jarang berubah (misalnya, informasi produk dan harga atau sumber daya statis bersama yang mahal untuk dibuat).

2. Cache hasil pekerjaan berulang

Jika suatu operasi mengubah data atau melakukan perhitungan rumit, melakukan penyimpanan di cache pada hasilnya dapat menghindari komputasi ulang untuk permintaan berikutnya.

3. Gunakan lapisan cache saat diperlukan

Pengembang menggunakan cache bertingkat (“lapisan cache”) untuk menyimpan berbagai jenis data dalam cache terpisah sesuai permintaan. Menambahkan satu atau beberapa lapisan cache dapat meningkatkan throughput dan latensi pada lapisan data.

4. Simpan keadaan sesi lebih dekat untuk aplikasi yang responsif

Penyimpanan dalam memori sering digunakan untuk menyimpan data sesi bervolume besar, seperti input pengguna, item keranjang belanja, atau preferensi personalisasi dalam waktu singkat. Untuk aplikasi stateful, tim juga menyimpan keadaan sesi di cache agar aplikasi dapat bersifat stateless.

Dampak pada performa sistem

Penyimpanan di cache dapat meningkatkan performa dengan beberapa cara konkret:

  • Membaca data dari cache dalam memori jauh lebih cepat daripada mengakses data dari penyimpanan berdasarkan disk.
  • Jumlah kueri yang lebih sedikit dapat mengurangi beban dan membatasi kebutuhan untuk meningkatkan skala infrastruktur database, yang juga dapat menurunkan biaya.
  • Lapisan cache dapat meningkatkan throughput dan latensi, dan cache dalam memori dapat membantu mengurangi latensi saat terjadi lonjakan penggunaan.
  • Satu instans cache dapat menangani jutaan permintaan per detik, menawarkan throughput yang tidak dapat disaingi banyak database.

Bagaimana cara kerja penyimpanan di cache?

Alur dasar: Cache + penyimpanan data sumber

Dalam banyak desain cloud, cache ditempatkan di samping penyimpanan data utama (seperti database). Penyimpanan utama menyimpan himpunan data lengkap yang tahan lama di cloud server, sementara cache menyimpan subset yang berukuran lebih kecil dan sementara yang dibaca dengan lebih cepat.

Konfigurasi yang umum adalah lapisan cache terpisah, atau cache yang berada di dalam aplikasi atau tingkat database—dipilih berdasarkan kebutuhan di mana Anda perlu membaca data dengan cepat.

Lapisan cache: Lebih dari satu “jalur cepat”

Beberapa sistem menggunakan penyimpanan di cache bertingkat (“lapisan cache”) agar jenis data yang berbeda berada di cache yang berbeda berdasarkan kebutuhan. Menambahkan satu atau beberapa lapisan cache dapat meningkatkan throughput dan latensi untuk lapisan data serta mengurangi biaya keseluruhan dengan menurunkan beban backend.

Apa yang di-cache (dan alasannya)

Tim biasanya menyimpan data di cache yang termasuk dalam beberapa kategori berikut:

  • Data yang sering dibaca (terutama jika jarang berubah), seperti informasi produk atau harga, dan sumber daya statis bersama yang mahal untuk dibuat.
  • Komputasi berulang, saat suatu operasi mengubah data atau melakukan penghitungan rumit—menyimpan hasil di cache menghindari pekerjaan yang sama untuk permintaan berikutnya.
  • Keadaan sesi untuk aplikasi stateful, di mana menyimpan keadaan sesi di cache dapat membantu menjaga lapisan aplikasi tetap stateless.

Pola penyimpanan di cache umum (alur kerja baca/tulis)

Ada beberapa cara standar yang digunakan aplikasi untuk membaca dan menulis ke cache. Berikut pola paling umum dan arti praktiknya.

  • Cache-aside: Memuat data sesuai permintaan dari penyimpanan data.
  • Read-through: Membaca dari cache, dan cache mengambil dari penyimpanan data jika diperlukan.
  • Write-through: Menulis ke cache, lalu melakukan sinkronisasi ulang dengan penyimpanan data secara sinkron.
  • Write-back (write-behind): Menulis ke cache, lalu cache menulis kembali ke penyimpanan data dalam batch.
  • Write-around: Menulis ke penyimpanan data dan membaca dari cache; cache diperbarui sesuai permintaan.

Mengapa ini dapat mengurangi beban dan mempercepat proses

Menggunakan lapisan cache dapat meningkatkan throughput dan latensi dengan melayani permintaan umum dari cache alih-alih berulang kali mengkueri penyimpanan back-end. Hal ini dapat mengurangi kebutuhan untuk menskalakan infrastruktur database karena lebih sedikit permintaan yang menjangkau database sejak awal.

Untuk aplikasi dengan lonjakan penggunaan, cache dalam memori dapat membantu mengurangi latensi dengan menjaga data yang sering diminta dekat dengan lokasi penggunaannya.

Panduan cepat: Memilih pola

Gunakan ini sebagai titik awal saat memilih alur kerja Anda:

  • Lebih baik gunakan cache-aside saat aplikasi dapat menentukan data apa yang disimpan dan kapan data harus diperbarui.
  • Lebih baik gunakan read-through saat Anda ingin cache menangani pengambilan dari penyimpanan data “jika diperlukan.”
  • Pertimbangkan write-through atau write-back saat perilaku penulisan penting dan Anda ingin pendekatan resinkronisasi yang jelas.

Manfaat dan penerapan penyimpanan di cache

Respons lebih cepat dengan beban backend yang lebih ringan

Penyimpanan di cache meningkatkan performa aplikasi karena membaca dari cache dalam memori lebih cepat daripada membaca dari penyimpanan data berbasis disk. Saat lebih banyak permintaan dilayani dari cache, sistem mengirim lebih sedikit kueri ke database backend, yang dapat mengurangi kebutuhan untuk menskalakan infrastruktur database dan menurunkan biaya terkait.

Apa yang biasanya Anda dapatkan dari penyimpanan di cache
  • Latensi yang lebih rendah untuk pembacaan umum, karena data yang sering diminta berasal dari lapisan yang lebih cepat.
  • Pengurangan beban dan biaya database, karena penyimpanan di cache menghasilkan lebih sedikit kueri database dan mengurangi tekanan untuk melakukan penyediaan berlebih pada instans database.
  • Throughput yang lebih dapat diprediksi, karena cache dapat menangani volume permintaan yang sangat tinggi dibandingkan banyak database.
  • Penanganan lonjakan lalu lintas yang lebih lancar, karena cache dalam memori dapat mengurangi latensi selama periode throughput tinggi.

Pemanfaatan sumber daya komputasi dan penyimpanan yang lebih baik

Penyimpanan di cache membantu mengurangi pekerjaan berulang. Data yang dibaca berulang kali—atau yang mahal untuk dibuat—dapat disimpan sekali dan digunakan kembali. Jika suatu operasi melakukan penghitungan yang rumit atau mentransformasi data, menyimpan hasilnya di cache akan mengurangi perhitungan berulang untuk permintaan berikutnya.

Calon “cache yang baik” yang umum
  • Data yang jarang berubah (misalnya, informasi produk dan harga).
  • Sumber daya statis bersama yang mahal untuk dibuat.
  • Hasil operasi yang dihitung berulang kali.

Penerapan di dunia nyata (di mana penyimpanan di cache digunakan)

Situs web: Pemuatan halaman lebih cepat dan lebih sedikit perjalanan bolak-balik

Banyak situs menyimpan output halaman di cache (seperti HTML dan skrip klien) agar server dapat mengembalikan output yang di-cache alih-alih menjalankan ulang kode halaman setiap kali. Penyimpanan di cache juga mendukung skenario multimedia web melalui cache web dan penyimpanan di cache jaringan, seperti content delivery network (CDN).

Penggunaan umum di situs web
  • Menyimpan output halaman penuh di cache untuk tampilan berulang.
  • Menyimpan aset statis di cache melalui penyimpanan di cache jaringan/CDN.
Aplikasi dan API: Pembacaan yang lebih cepat untuk data bersama

Aplikasi sering menyimpan subset data sementara di dalam cache untuk pengambilan cepat, sementara database utama menyimpan himpunan data lengkap yang tahan lama. Penyimpanan di cache data yang telah diproses dan menggunakannya kembali dapat melayani permintaan lebih cepat daripada kueri database standar.

Pola aplikasi umum
  • Menyimpan data referensi yang sering dibaca di cache (seperti harga) untuk mengurangi panggilan database berulang.
  • Menyimpan hasil komputasi di cache untuk menghindari pengulangan pekerjaan yang mahal.
Server dan layanan: Menskalakan pembacaan dan meredam lonjakan

Tim sering menambahkan satu atau beberapa lapisan cache untuk meningkatkan throughput dan latensi, melayani kueri umum dari cache, dan mengurangi beban database. Cache dalam memori dapat membantu saat terjadi lonjakan penggunaan dan permintaan throughput meningkat, sehingga mengurangi latensi selama periode tersebut.

Di mana layanan ini paling membantu
  • Titik akhir dengan pembacaan tinggi, saat kunci yang sama sering diminta.
  • Sistem yang mengalami lonjakan lalu lintas secara berkala.
Sistem bisnis: Keadaan sesi dan data operasional bersama

Penyimpanan di cache sering digunakan untuk menyimpan data sesi berumur pendek dalam volume besar (seperti input pengguna atau preferensi personalisasi) di penyimpanan dalam memori. Beberapa tim juga menyimpan keadaan sesi di cache agar aplikasi stateful dapat menjaga lapisan aplikasi tetap stateless. Untuk sistem operasional, data yang jarang berubah—seperti informasi produk dan harga—adalah target penyimpanan di cache yang umum.

Contoh yang dapat Anda petakan ke beban kerja bisnis
  • Data sesi untuk aplikasi web dan seluler (berjangka waktu pendek, volume tinggi).
  • Data referensi operasional yang sering dibaca (harga, sumber daya bersama).

Jenis cache

Penyimpanan di cache muncul di beberapa lapisan antara aplikasi dan datanya, termasuk pendekatan sisi klien dan sisi server.

Cache browser (sisi klien)

Cache browser menyimpan salinan sumber daya statis di perangkat pengguna agar kunjungan berikutnya dapat menggunakan kembali file tersebut alih-alih mengunduhnya kembali.

Kasus penggunaan umum
  • Aset situs statis seperti gambar, file CSS, dan file JavaScript.
  • Mengurangi bolak-balik ke server asal untuk sumber daya yang sebelumnya sudah diambil.

Cache sisi server

Penyimpanan di cache sisi server dilakukan di proses yang menjalankan layanan bisnis secara jarak jauh, bukan di perangkat pengguna akhir. Cache sisi server sering kali bersifat privat (lokal untuk satu instans aplikasi) atau bersama (digunakan oleh banyak instans aplikasi).

Kasus penggunaan umum
  • Cache privat dalam memori di dalam satu proses untuk data statis dalam jumlah kecil.
  • Layanan cache bersama agar beberapa instans aplikasi membaca nilai yang sama dari cache dan menghindari “versi yang berbeda” antara instans.
  • Data yang sering dibaca tetapi jarang diubah (misalnya, data referensi produk dan harga).

Cache CDN

CDN menyimpan konten di cache di server edge yang lebih dekat dengan pengguna akhir, sehingga permintaan tidak selalu harus kembali ke tempat asal. Tidak seperti cache browser (satu pengguna), cache CDN bersifat bersama—permintaan dari satu pengguna dapat mengisi konten yang kemudian diterima pengguna lain.

Kasus penggunaan umum
  • Pengiriman bersama konten yang dapat di-cache dari lokasi edge untuk mengurangi permintaan ke tempat asal.
  • Sumber daya statis yang diuntungkan dengan dilayani dekat dengan pengguna (jenis aset yang sama seperti yang di-cache browser, tetapi dibagikan antar pengguna).

Cache CPU/memori

Penyimpanan di cache bukan hanya sebuah pola komputasi cloud—lapisan perangkat keras dan memori juga menggunakannya.

Cache CPU adalah area memori kecil dan cepat di dekat (atau pada) prosesor yang menyimpan salinan data dan instruksi yang sering digunakan untuk mengurangi waktu menunggu memori utama.

Cache memori (dalam-memori) adalah jenis cache perangkat lunak paling sederhana: Penyimpanan dalam memori yang berada di ruang alamat satu proses dan diakses langsung oleh proses tersebut.

Kasus penggunaan umum
  • Cache CPU: Akses berulang ke instruksi/data yang sama tanpa sering mengakses memori utama.
  • Cache dalam memori: Pembacaan cepat sejumlah kecil data yang relatif statis di dalam satu layanan yang berjalan.

Penyimpanan di cache terdistribusi

Cache terdistribusi mencakup beberapa server sehingga cache dapat meningkat dan kapasitas transaksionalnya melampaui satu komputer. Banyak layanan cache bersama menggunakan kluster server dan mendistribusikan data yang di-cache di seluruh kluster; penskalaan cache bisa sesederhana menambahkan lebih banyak server. Beberapa desain terdistribusi juga melapisi cache, sehingga saat tidak menemukan data di satu lapisan, data diambil dari penyedia hulu lalu hasilnya disimpan secara lokal untuk permintaan berikutnya.

Kasus penggunaan umum
  • Tingkat cache bersama untuk beberapa instans aplikasi dan komputer.
  • Beban kerja yang membutuhkan kapasitas dan throughput cache yang melebihi satu host.
  • Pengaturan cache berlapis yang ketika tidak mendapatkan data mengambil dari hulu lalu menyimpan salinan lokal untuk permintaan berikutnya.

Mulai menggunakan penyimpanan di cache

Mengapa penyimpanan di cache tetap penting

Penyimpanan di cache menyimpan data yang sering diakses lebih dekat ke tempat data digunakan, sehingga dapat meningkatkan waktu respons dan membantu sistem menangani lebih banyak permintaan bersamaan. Ini juga dapat mengurangi hambatan di penyimpanan data asli, misalnya saat database memiliki koneksi terbatas.

Dalam aplikasi terdistribusi, penyimpanan di cache sering dilakukan di lebih dari satu tempat—sisi klien (seperti browser) dan sisi server (di aplikasi atau layanan cache bersama).

Cara praktis untuk memulai

Mulai dari data kecil dan fokus pada data yang memberi hasil paling jelas:

  • Simpan data yang sering dibaca, lambat diambil, dan jarang berubah di cache (misalnya, data referensi).
  • Tentukan kapan data masuk ke cache:
    • Berdasarkan permintaan setelah permintaan pertama, sehingga Anda hanya menyimpan data yang benar-benar digunakan.
    • Isi terlebih dahulu (seed) beberapa item saat startup jika sudah tahu item itu akan diminta lebih awal—sambil memantau beban startup pada penyimpanan asli.
  • Pilih pola yang dapat Anda kelola. Pola cache-aside umum digunakan, dan panduannya menyoroti bagaimana masa kedaluwarsa, pencabutan, dan konsistensi memengaruhi hasil.

Jaga data cache tetap terbaru (dan sistem tetap tangguh)

Cache biasanya menyimpan salinan data dari penyimpanan utama, jadi pembaruan data perlu diperhatikan:

  • Gunakan kebijakan kedaluwarsa untuk membatasi berapa lama data bisa berada di dalam cache sebelum di-refresh.
  • Pantau perilaku pengeluaran saat cache penuh (banyak sistem secara default mengeluarkan item yang paling lama tidak diakses).
  • Jangan jadikan cache sebagai satu-satunya tempat untuk data penting. Simpan sumber kebenaran di penyimpanan persisten agar sistem tetap bisa berjalan jika cache tidak tersedia.
  • Siapkan jalur fallback ke penyimpanan data asli jika cache tidak dapat dijangkau, lalu isi ulang saat pembacaan terjadi.

Penyimpanan di cache adalah blok pembangun inti untuk sistem modern karena cocok untuk banyak arsitektur—dari layanan tunggal hingga aplikasi terdistribusi dan penyampaian di tepi. Untuk cache terkelola dalam memori penyedia cloud, Anda dapat menjelajahi Azure.

latar belakang gradien
Sumber Daya

Sumber daya

Pelatihan
Sumber daya Azure
Jelajahi teknologi pengembang terbaru dan pelajari keterampilan baru.
Pendidikan
Sumber daya pengembang siswa
Dapatkan keterampilan untuk memulai karier Anda dengan cepat dan memberikan dampak positif bagi dunia.
Acara
Acara dan seminar web Azure
Pelajari keterampilan baru, temukan teknologi baru, dan jalin komunikasi dengan komunitas Anda dengan menghadiri acaranya secara digital atau langsung.
FAQ

Tanya jawab umum

  • Penyimpanan di cache data yang sering diakses di memori cepat sehingga aplikasi dapat mengembalikan hasil dengan cepat tanpa harus selalu mengakses database utama. Ini menurunkan latensi dan beban back-end, yang membantu sistem menangani lebih banyak permintaan bersamaan.
  • Penyimpanan di cache meningkatkan performa dengan menyajikan data yang sering diminta dari memori cepat, menurunkan latensi, mengurangi beban dan biaya database, mendukung volume permintaan tinggi, serta membantu saat lonjakan lalu lintas.
  • Salah satu contohnya adalah penyimpanan di cache output—server web menyimpan output halaman yang sudah dirender (HTML dan skrip klien) di memori, lalu menyajikan output yang di-cache itu saat kunjungan ulang alih-alih menjalankan ulang kode halaman.
  • Cache menyimpan subset data yang lebih kecil dan sementara untuk akses cepat, sedangkan database atau penyimpanan menyimpan himpunan data lengkap dan tahan lama untuk retensi jangka panjang. Jika data yang di-cache hilang, salinan permanennya tetap ada di database; cache bukan dimaksudkan sebagai penyimpanan otoritatif untuk data penting.