Saya ingin tahu apa yang akan menjadi pendekatan yang lebih baik untuk membatalkan / memperbarui objek cache.
Prasyarat
- Memiliki server memcached jarak jauh (berfungsi sebagai cache untuk beberapa aplikasi)
- Semua server di-host oleh azure (wilayah afinitas, pusat data yang sama)
- Ukuran objek cache berkisar dari 200 byte hingga 50 kilobyte
Pendekatan 1 (simpan dalam cache secepatnya)
- Objek A dibuat -> simpan dalam database dan simpan dalam cache
- Objek A diminta oleh klien -> periksa keberadaan cache, jika tidak ambil dari database dan simpan di cache
- Objek A diperbarui -> simpan dalam database, simpan dalam cache
Pendekatan 1 tampaknya lebih mudah. Jika sesuatu dibuat, masukkan cache secepatnya. Terlepas dari seseorang akan membutuhkannya.
Pendekatan 2 (toko cache malas)
- Objek A dibuat -> simpan dalam basis data
- Objek A diminta oleh klien -> periksa keberadaan cache, jika tidak ambil dari database dan simpan di cache
- Objek A diperbarui -> simpan dalam basis data, hapus kunci dalam cache
Pendekatan 2 tampaknya lebih sadar akan memori. Dalam pendekatan ini hanya item yang diminta masuk ke cache.
Pertanyaan 1: Dalam pikiran kinerja, apa yang akan menjadi pendekatan yang lebih baik? Memori atau CPU belum masuk hitungan.
Pertanyaan 2: Apakah pemikiran saya semacam optimasi prematur?
Pertanyaan 3: Ada pemikiran lain? Pendekatan lain?