Abstraksi IDistributedCache
Simpan data dalam cache di beberapa server.
Abstraksi IDistributedCache adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Mengapa Penyimpanan Sementara Terdistribusi?
Penyimpanan sementara dalam memori berada di dalam satu proses, sehingga hilang saat dimulai ulang dan tidak dibagikan ke server lain. Penyimpanan sementara terdistribusi berada di penyimpanan eksternal (seperti Redis) yang dapat dibaca dan ditulisi oleh setiap instans aplikasi Anda, sehingga penyimpanan tetap konsisten dalam penerapan berskala besar.
Antarmuka IDistributedCache
ASP.NET Core mengabstraksikan cache terdistribusi melalui IDistributedCache di Microsoft.Extensions.Caching.Distributed. Kode Anda bergantung pada antarmuka ini, bukan langsung pada Redis, sehingga Anda dapat mengganti implementasinya.
public interface IDistributedCache
{
byte[] Get(string key);
Task<byte[]> GetAsync(string key, CancellationToken token = default);
void Set(string key, byte[] value, DistributedCacheEntryOptions options);
void Remove(string key);
void Refresh(string key);
}Cache Menyimpan Byte
Perhatikan bahwa cache menyimpan byte[]. Untuk menyimpan teks atau objek dalam cache, Anda harus membuat serialisasinya terlebih dahulu. Tersedia metode ekstensi teks yang praktis untuk kasus umum.
using Microsoft.Extensions.Caching.Distributed;
await cache.SetStringAsync("greeting", "Hello, world");
string value = await cache.GetStringAsync("greeting");Menyuntikkan Cache
Minta IDistributedCache melalui injeksi konstruktor seperti layanan lainnya.
public class WeatherService
{
private readonly IDistributedCache _cache;
public WeatherService(IDistributedCache cache)
{
_cache = cache;
}
}Membaca dari Cache
GetStringAsync mengembalikan null ketika kunci tidak ada atau sudah kedaluwarsa. Selalu tangani kasus ketika data tidak ditemukan dalam cache.
string cached = await _cache.GetStringAsync("forecast:istanbul");
if (cached is null)
{
// cache miss: load from source
}Menulis ke Cache
SetStringAsync menyimpan nilai dengan options kedaluwarsa opsional, yang dibahas dalam pelajaran berikutnya.
await _cache.SetStringAsync(
"forecast:istanbul",
"22C sunny",
new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
});Menghapus dan Menyegarkan
RemoveAsync mengeluarkan kunci dari cache, misalnya ketika data yang mendasarinya berubah. RefreshAsync mengatur ulang kedaluwarsa geser tanpa mengubah nilai.
await _cache.RemoveAsync("forecast:istanbul");
await _cache.RefreshAsync("session:abc123");Implementasi Dalam Memori
Untuk pengembangan atau pengujian, daftarkan cache terdistribusi dalam memori. Cache ini mengimplementasikan antarmuka yang sama, sehingga kode Anda tetap identik, tetapi data sebenarnya tidak dibagikan antarproses.
builder.Services.AddDistributedMemoryCache();Kode yang Tidak Bergantung pada Penyedia
Karena Anda hanya bergantung pada IDistributedCache, beralih dari penyedia dalam memori ke Redis atau SQL Server cukup dengan mengubah satu baris pendaftaran, tanpa mengubah kode di layanan Anda.
Konvensi Penamaan Kunci
Gunakan kunci terstruktur dengan ruang nama seperti entity:id:field, misalnya user:42:profile. Konvensi yang jelas mencegah bentrokan dan membuat pembatalan cache lebih mudah diprediksi.
string key = $"user:{userId}:profile";Kapan Tidak Menggunakan Cache
Simpan dalam cache data yang sering dibaca dan jarang berubah. Data yang sangat mudah berubah atau sensitif dan spesifik bagi pengguna mungkin tidak cocok, dan risiko data kedaluwarsa harus selalu dipertimbangkan terhadap peningkatan kinerja.
Pemeriksaan Singkat
Uji abstraksi IDistributedCache.
Rangkuman
IDistributedCache mengabstraksikan cache eksternal dan bersama sehingga setiap instans aplikasi melihat data yang sama. Cache ini menyimpan byte[], dengan GetStringAsync/SetStringAsync untuk teks, serta RemoveAsync dan RefreshAsync. Ketergantungan pada antarmuka membuat kode tidak bergantung pada penyedia dan dapat dialihkan antara AddDistributedMemoryCache dan Redis hanya dengan satu baris. Gunakan kunci dengan ruang nama yang jelas.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Abstraksi IDistributedCache” gratis?
Ya — teks lengkap “Abstraksi IDistributedCache” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Abstraksi IDistributedCache”?
Simpan data dalam cache di beberapa server. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Abstraksi IDistributedCache” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Abstraksi IDistributedCache
- Menghubungkan ke Redis
- Pola dan Kedaluwarsa Cache
- Caching Objek Berserialisasi