Ich möchte wissen, was ein besserer Ansatz zum Ungültigmachen / Aktualisieren von Cache-Objekten wäre.
Voraussetzungen
- Remotememcached Server (der als Cache für mehrere Anwendungen dient)
- Alle Server werden von Azure gehostet (Affinitätsbereiche, gleiche Rechenzentren)
- Die Größe des Cache-Objekts reicht von 200 Bytes bis zu 50 Kilobytes
Ansatz 1 (so schnell wie möglich im Cache speichern)
- Objekt A wird erstellt -> in Datenbank speichern und im Cache speichern
- Objekt A vom Client angefordert -> Cache auf Existenz prüfen, andernfalls aus der Datenbank holen und im Cache ablegen
- Objekt A wird aktualisiert -> in Datenbank speichern, im Cache speichern
Ansatz 1 scheint einfacher zu sein. Wenn etwas erstellt wird, legen Sie es so schnell wie möglich in den Cache. Egal, jemand wird es brauchen.
Ansatz 2 (Lazy Cache Store)
- Objekt A wird angelegt -> in Datenbank ablegen
- Objekt A vom Client angefordert -> Cache auf Existenz prüfen, andernfalls aus der Datenbank holen und im Cache ablegen
- Objekt A wird aktualisiert -> in Datenbank speichern, Schlüssel im Cache löschen
Ansatz 2 scheint speicherbewusster zu sein. Bei diesem Ansatz werden nur angeforderte Elemente in den Cache gestellt.
Frage 1: Was wäre im Hinblick auf die Leistung ein besserer Ansatz? Speicher oder CPU zählen noch nicht.
Frage 2: Sind meine Gedanken eine Art vorzeitige Optimierung?
Frage 3: Irgendwelche anderen Gedanken? Andere Ansätze?