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?
performance
azure
memcached
caching
lurkerbelow
quelle
quelle
memcached verwaltet Objekte mit einer eigenen Richtlinie. Dieses zwischengespeicherte Objekt läuft ab, wenn niemand darauf zugreift, oder wenn im memcached nicht genügend Arbeitsspeicher vorhanden ist. Daher ist Ihre erste Vorgehensweise keine gute Idee, da Ihr Objekt in memcached aufgrund von Speichermangel beim Erstellen von Objekten immer wieder ungültig wird.
Q1. Ansatz 2 wäre in Bezug auf die Leistung besser, da er kein Objekt an memcached sendet, obwohl die Leistungsverbesserung sehr gering ist.
Q2. Es ist schwer zu sagen. Angenommen, Sie kennen den Engpass und entwerfen die Ansätze, die nicht verfrüht wären.
Q3. Es gibt andere Ansätze wie Cache nur in Memcached.
quelle