In der heutigen Welt ist die Anwendungsleistung von entscheidender Bedeutung. Benutzer erwarten schnelle Reaktionszeiten, insbesondere bei Anwendungen mit hohem Datenverkehr, bei denen Latenz das Benutzererlebnis beeinträchtigen oder beeinträchtigen kann. Caching ist eine der effektivsten Möglichkeiten zur Verbesserung der Backend-Leistung, insbesondere bei sich wiederholenden oder teuren Datenabrufvorgängen. In diesem Beitrag befassen wir uns mit dem Caching mit Spring Boot und besprechen verschiedene Caching-Strategien und Implementierungstipps, um die Geschwindigkeit Ihrer Anwendung zu steigern.
Caching ermöglicht es Anwendungen, Daten vorübergehend zu speichern, wodurch die Zeit verkürzt wird, die zum Abrufen häufig aufgerufener Daten aus der Datenbank oder externen Diensten erforderlich ist. Durch die Reduzierung des direkten Datenbankzugriffs trägt Caching dazu bei, die Serverlast zu senken, die Netzwerknutzung zu optimieren und, was am wichtigsten ist, die Antwortzeiten zu beschleunigen.
Spring Boot erleichtert das Hinzufügen von Caching zu einer Anwendung, indem es die Annotation @EnableCaching nutzt und eine einfache Abstraktion für die Cache-Verwaltung bereitstellt.
Um zu beginnen, aktivieren Sie das Caching, indem Sie @EnableCaching zu Ihrer Hauptanwendungsklasse hinzufügen:
@SpringBootApplication @EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Dies aktiviert die Caching-Infrastruktur von Spring, die nach Caching-Anmerkungen zu Ihren Methoden zum Verwalten von Cache-Einträgen sucht.
Spring Boot bietet eine Vielzahl von Cache-Anbietern, darunter:
ConcurrentHashMap (Standard): Geeignet für einfache Anwendungen oder lokales Caching.
Ehcache: Ein beliebter In-Memory-Cache mit starker Unterstützung für Java-Anwendungen.
Redis: Ideal für verteilte Anwendungen aufgrund seiner vernetzten In-Memory-Datenstrukturfunktionen.
Hazelcast, Koffein, Memcached usw.
Lassen Sie uns hier Redis als unseren Cache-Anbieter verwenden. Fügen Sie Redis-Abhängigkeiten zu Ihrer pom.xml hinzu:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
Konfigurieren Sie in Ihrer application.properties-Datei die Redis-Serververbindung:
spring.cache.type=redis spring.redis.host=localhost spring.redis.port=6379
Hinweis: Stellen Sie sicher, dass Redis auf Ihrem lokalen Computer ausgeführt wird, oder stellen Sie eine Verbindung zu einem Cloud-Redis-Dienst her.
Wenn Caching aktiviert und ein Anbieter konfiguriert ist, können Sie damit beginnen, Caching-Anmerkungen auf Methoden anzuwenden, die vom Caching profitieren. Die am häufigsten verwendete Annotation ist @Cacheable.
Beispiel für @Cacheable
Verwenden Sie @Cacheable für Methoden, um das Ergebnis in einem Cache zu speichern. Hier ist ein Beispiel für die Verwendung eines Dienstes, der Benutzerdaten abruft:
@SpringBootApplication @EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
In diesem Beispiel wird die Methode getUserById zwischengespeichert und das Benutzerobjekt nach Benutzer-ID im Cache „Benutzer“ gespeichert. Nachfolgende Aufrufe mit derselben Benutzer-ID geben den zwischengespeicherten Wert zurück und umgehen die Verzögerung simulierenSlowService().
Verwendung von @CachePut und @CacheEvict
@CachePut: Aktualisiert den Cache, ohne die Methodenausführung zu überspringen.
@CacheEvict: Entfernt einen Eintrag aus dem Cache, was nützlich ist, um zwischengespeicherte Daten aktuell zu halten.
Verwenden Sie beispielsweise @CacheEvict, wenn Sie einen Benutzer aktualisieren oder löschen:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
Caching-Strategien
Um das Caching optimal zu nutzen, ist es wichtig, die richtige Caching-Strategie zu wählen. Hier sind einige Ansätze, die Sie in Betracht ziehen sollten:
Konfigurieren Sie TTL für Cache-Einträge so, dass sie nach einem festgelegten Zeitraum automatisch ablaufen. Dadurch wird verhindert, dass veraltete Daten im Cache verbleiben, was besonders bei häufig aktualisierten Daten nützlich ist.
In Redis können Sie TTL wie folgt in Ihrer Konfiguration festlegen:
spring.cache.type=redis spring.redis.host=localhost spring.redis.port=6379
Bei diesem Muster überprüft die Anwendung den Cache, bevor sie Daten aus der Datenbank abruft. Wenn die Daten nicht im Cache gefunden werden (ein „Cache-Fehler“), werden Daten aus der Datenbank abgerufen, das Ergebnis zwischengespeichert und zurückgegeben. Dies ist ein gängiger Ansatz und lässt sich mit @Cacheable einfach implementieren.
Durchschreiben: Der Cache wird gleichzeitig mit der Datenbank aktualisiert.
Write-behind: Der Cache wird sofort aktualisiert, die Datenbank wird jedoch später in einem Stapel aktualisiert.
Diese Ansätze sind hilfreich, wenn Sie Datenkonsistenz zwischen dem Cache und der Datenbank wünschen.
Es ist wichtig, die Cache-Leistung zu überwachen, um sicherzustellen, dass sie die erwarteten Vorteile bietet. Sie können Cache-Hits, -Fehlschläge und -Räumungen verfolgen, um etwaige Engpässe zu identifizieren. Zu den gängigen Überwachungstools gehören:
Caching ist ein leistungsstarkes Tool zur Verbesserung der Backend-Leistung und lässt sich mit Spring Boot unkompliziert implementieren. Durch die Nutzung von Caching-Annotationen wie @Cacheable, @CacheEvict und die Verwendung einer geeigneten Caching-Strategie können Sie Antwortzeiten erheblich verkürzen, die Serverlast verringern und das Benutzererlebnis insgesamt verbessern. Unabhängig davon, ob Sie mit Redis, Ehcache oder einem anderen Cache-Anbieter arbeiten, ist Caching eine wertvolle Ergänzung für jede leistungsstarke Anwendung.
Beginnen Sie mit dem Caching in Ihrer Spring Boot-Anwendung und beobachten Sie, wie sich Ihre Leistung verbessert!
Das obige ist der detaillierte Inhalt vonVerbessern der Backend-Leistung durch Caching in Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!