
-
Die Verwendungslogik des Caches ist grundsätzlich sehr allgemein: Der Cache wird zuerst überprüft. Wenn vorhanden, wird er direkt zurückgegeben, ohne die Datenbank zu überprüfen, und dann im Cache abgelegt. Diese allgemeine Logik ist im gesamten System verstreut und verstößt gegen das Prinzip der hohen Kohäsion und der geringen Kopplung. -
Caching-Code und Geschäftslogikcode sind eng miteinander verknüpft, was nicht nur die Lesbarkeit des Codes verringert, sondern auch die Komplexität des Systems erhöht. -
Wenn Sie den Cache wechseln (MDB->LDB) oder die API aktualisieren möchten, müssen alle beteiligten Codes geändert werden. -
Wenn Sie häufige Probleme wie Cache-Penetration, Cache-Penetration, kaskadierender Cache usw. lösen möchten, müssen Sie diese über das Framework lösen.

Lesen Sie zuerst die Cache-Daten und kehren Sie direkt zurück, wenn keine Daten gelesen werden. Lesen Sie die DB-Daten und aktualisieren Sie dann den Cache, nachdem die Daten zurückgegeben wurden.
Dieses Szenario kommt im täglichen Codieren sehr häufig vor und ist zu einfach, aber der tatsächliche Code ist tatsächlich sehr unterschiedlich. Hier sind einige Beispiele:
▐Traditionelles Schreiben
Welcher Cache auch immer verwendet wird, verwenden Sie ihn direkt und betten Sie ihn in den Geschäftscode ein. Diese Art von Code möchte ich nicht sehen, sei es zur Codeüberprüfung oder wenn zukünftige Generationen Geschäftscode lernen. Der Grund ist sehr einfach und hat nichts mit tatsächlichen Geschäftsfunktionen zu tun Sie verwenden oder wie Sie den Cache-Code codieren.
▐Eine fortgeschrittenere Art zu schreiben
Im Vergleich zur herkömmlichen Schreibmethode kann das Team das Caching in einer einfachen API kapseln, die jeder verwenden kann, um das Problem des Zwischenspeicherns verschiedener Datenformate (Liste, Karte usw.) und verschiedener Objektserialisierungen (Java, JSON) zu lösen . Es ist einfacher zu verwenden, aber der Code ist immer noch in den Geschäftscode eingebettet und wurde nicht entfernt.

▐Wie schreibe ich Anmerkungen ?


Der Spring-Cache verwendet einen dynamischen Proxy, um Cache-bezogene Vorgänge in der Proxy-Klasse zu verarbeiten, und ruft gleichzeitig Methoden in der Proxy-Klasse auf, sodass der Code, der den Cache betreibt, und der Geschäftscode getrennt werden können und wann die Cache-Funktion erforderlich ist Um es später zu verstärken, ändern Sie einfach die Methode in der Proxy-Klasse.
▐Codeverzeichnis

▐Anmerkungskarte
▐Beispiel zur Verwendung von Anmerkungen
@Cacheable(value = "user_cache", unless = "#result == null")
public User getUserById(Long id) {
return userMapper.getUserById(id);
}
@CachePut(value = "user_cache", key = "#user.id", unless = "#result == null")
public User updateUser(User user) {
userMapper.updateUser(user);
return user;
}
@CacheEvict(value = "user_cache", key = "#id")
public void deleteUserById(Long id) {
userMapper.deleteUserById(id);
}
▐Programmanalyse
-
Mehrstufiger Cache; -
Der Cache wird regelmäßig aktualisiert; -
Listencache; -
Cache-CPP-Schutzmechanismus; -
Cache-Anzahl.


Lernen Sie die Spring-Cache-Framework-Lösung kennen und implementieren Sie ein benutzerdefiniertes Cache-Framework, das nicht nur die Vorteile des Spring-Cache-Frameworks beibehält, sondern auch viele fehlende Funktionen des Spring-Caches realisiert, wie z. B. Cache-Aufschlüsselung, Cache-Penetrationsschutz, mehrstufiger Cache usw .
▐Beispiel für einen Anmerkungscode

▐Projektstruktur


Mithilfe der Spring-Cache-Implementierung erstellen wir ein benutzerdefiniertes Cache-Framework und erweitern viele Anmerkungen wie Zählung, Cache-Aktualisierung, Listen-Cache, verteilte Sperre, mehrstufiger Cache usw., wodurch nicht nur die Trennung von Cache-Code und realisiert wird Geschäftscode, erweitert aber auch die Feder Die Fähigkeit zum Zwischenspeichern verbessert die Lesbarkeit des Codes erheblich und verringert die Effizienz der Wartung des zwischengespeicherten Codes.

Die Mission des Tmall Automotive Technology Teams besteht darin, das ultimative Leben von Menschen und Autos zu erleben, die Automobilindustrie neu zu gestalten und ein fürsorglicher Autoverwalter um Sie herum zu sein. Sie alle stärken den Geist der Verbraucher für die Online-Autobesichtigung, den Kauf und die Wartung von Autos sowie die Digitalisierung und vertikale Integration der Automobilindustrie und durch Modelldurchbrüche die Integration von Produkt und Effekt nutzen, die Brancheneffizienz verbessern und Branchendividenden schaffen.
Serverseitige Technologie | . Technische Qualität |
Dieser Artikel wurde über das öffentliche WeChat-Konto – Big Taobao Technology (AlibabaMTT) – geteilt.
Bei Verstößen wenden Sie sich bitte zur Löschung an [email protected].
Dieser Artikel ist Teil des „ OSC Source Creation Plan “. Alle, die ihn lesen, sind herzlich eingeladen, mitzumachen und ihn gemeinsam zu teilen.