Caching Objek Berserialisasi
Simpan dan ambil objek kompleks.
Caching Objek Berserialisasi adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Menyimpan dalam Cache Lebih dari Sekadar Teks
Aplikasi nyata menyimpan objek dalam cache, bukan hanya teks. Karena IDistributedCache menyimpan byte, Anda harus membuat serialisasi objek menjadi representasi byte atau teks, lalu melakukan deserialisasi saat mengambilnya. JSON biasanya menjadi pilihan.
Membuat Serialisasi dengan System.Text.Json
Gunakan System.Text.Json untuk mengubah objek menjadi string JSON, lalu simpan dengan SetStringAsync.
using System.Text.Json;
var product = new Product { Id = 1, Name = "Coffee", Price = 4.5m };
string json = JsonSerializer.Serialize(product);
await _cache.SetStringAsync("product:1", json);Melakukan Deserialisasi Saat Membaca
Saat membaca, ambil string JSON lalu lakukan deserialisasi kembali menjadi tipe Anda. Jangan lupa menangani null ketika data tidak ditemukan dalam cache.
string json = await _cache.GetStringAsync("product:1");
if (json is null) return null;
Product product = JsonSerializer.Deserialize<Product>(json);Pembantu Generik yang Dapat Digunakan Kembali
Bungkus logika pembuatan serialisasi dan deserialisasi dalam metode ekstensi agar pemanggil dapat menyimpan tipe apa pun dalam cache dengan mudah.
public static async Task SetAsync<T>(
this IDistributedCache cache, string key, T value,
DistributedCacheEntryOptions options)
{
string json = JsonSerializer.Serialize(value);
await cache.SetStringAsync(key, json, options);
}Pembantu Get Generik
Pengambil yang sesuai melakukan deserialisasi kembali ke T, lalu mengembalikan default jika data tidak ditemukan.
public static async Task<T> GetAsync<T>(
this IDistributedCache cache, string key)
{
string json = await cache.GetStringAsync(key);
return json is null ? default : JsonSerializer.Deserialize<T>(json);
}Pola GetOrCreate
Gabungkan cache-aside dengan pembuatan serialisasi dalam satu pembantu: kembalikan objek dari cache, atau jalankan fungsi pembuat, simpan hasilnya dalam cache, lalu kembalikan hasil tersebut.
public static async Task<T> GetOrCreateAsync<T>(
this IDistributedCache cache, string key,
Func<Task<T>> factory, DistributedCacheEntryOptions options)
{
var existing = await cache.GetAsync<T>(key);
if (existing is not null) return existing;
var created = await factory();
await cache.SetAsync(key, created, options);
return created;
}Menggunakan GetOrCreate
Lokasi pemanggilan menjadi satu baris yang menyembunyikan seluruh mekanisme cache.
var product = await _cache.GetOrCreateAsync(
"product:1",
() => _repository.LoadProductAsync(1),
new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15)
});Options Serializer
Gunakan kembali satu instans JsonSerializerOptions, misalnya dengan camelCase dan mengabaikan nilai null, agar muatan data dalam cache tetap konsisten dan ringkas serta options tidak perlu dialokasikan berulang kali.
private static readonly JsonSerializerOptions JsonOptions = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition =
System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
};Membuat Versi Struktur Data Cache
Jika struktur tipe yang disimpan dalam cache berubah, JSON lama mungkin gagal dideserialisasi. Sertakan segmen versi dalam kunci, misalnya product:v2:1, agar penerapan versi baru secara alami melewati entri yang tidak kompatibel.
Jaga Muatan Data Tetap Ringkas
Simpan hanya bidang yang Anda perlukan dalam cache. Muatan data yang lebih kecil berarti penggunaan jaringan dan memori yang lebih rendah di Redis, serta serialisasi yang lebih cepat pada setiap pembacaan dan penulisan.
Perhatikan Biaya Serialisasi
Serialisasi memerlukan biaya. Untuk jalur yang sangat sering digunakan, pertimbangkan format yang ringkas atau simpan hasil yang sudah dirender, dan selalu lakukan pengukuran untuk memastikan cache benar-benar memberikan keuntungan secara keseluruhan.
Pemeriksaan Singkat
Uji penyimpanan objek yang telah dibuat serialisasinya dalam cache.
Rangkuman
Untuk menyimpan objek dalam cache, buat serialisasinya, biasanya sebagai JSON melalui System.Text.Json, saat menulis dan lakukan deserialisasi saat membaca. SetAsync<T>/GetAsync<T> generik serta pembantu GetOrCreateAsync menyembunyikan mekanismenya dan menerapkan cache-aside dengan rapi. Gunakan kembali JsonSerializerOptions, buat versi pada kunci cache ketika strukturnya berubah, jaga muatan data tetap ringkas, dan ukur biaya serialisasi pada jalur yang sangat sering digunakan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Caching Objek Berserialisasi” gratis?
Ya — teks lengkap “Caching Objek Berserialisasi” 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 “Caching Objek Berserialisasi”?
Simpan dan ambil objek kompleks. 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 4 dari 4.
Berapa lama pelajaran “Caching Objek Berserialisasi” 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