Heim > Java > javaLernprogramm > Hauptteil

Verbessern der Backend-Leistung durch Caching in Spring Boot

Barbara Streisand
Freigeben: 2024-11-15 17:11:02
Original
246 Leute haben es durchsucht

Improving Backend Performance with Caching in Spring Boot

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.

Warum Caching?

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.

Zu den häufigsten Anwendungsfällen für Caching gehören:

  • Wiederholtes Abrufen statischer oder selten geänderter Daten.
  • Verarbeitung von Ergebnissen komplexer, kostenintensiver Berechnungen.
  • Speichern von Benutzersitzungen oder Authentifizierungstokens.
  • Caching in Spring Boot einrichten

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.

Schritt 1: Aktivieren Sie Caching in Ihrer Spring Boot-Anwendung

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);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

Dies aktiviert die Caching-Infrastruktur von Spring, die nach Caching-Anmerkungen zu Ihren Methoden zum Verwalten von Cache-Einträgen sucht.

Schritt 2: Hinzufügen eines Cache-Anbieters

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>
Nach dem Login kopieren
Nach dem Login kopieren

Konfigurieren Sie in Ihrer application.properties-Datei die Redis-Serververbindung:

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Stellen Sie sicher, dass Redis auf Ihrem lokalen Computer ausgeführt wird, oder stellen Sie eine Verbindung zu einem Cloud-Redis-Dienst her.

Schritt 3: Anwenden von Cache-Anmerkungen

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);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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:

1. Time-to-Live (TTL)-Caching

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
Nach dem Login kopieren
Nach dem Login kopieren

2. Cache-Aside-Muster

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.

3. Write-Through- und Write-Behind-Caching

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.

Überwachen der Cache-Leistung

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:

  1. Redis-CLI: Überwachen Sie Redis-Cache-Treffer/-Fehler in Echtzeit.
  2. Spring Boot Actuator: Stellt Cache-Metriken zur Überwachung und Verwaltung bereit.
  3. Prometheus und Grafana: Verfolgen und visualisieren Sie Redis- und Spring Boot-Metriken.

Häufige Caching-Fallstricke, die es zu vermeiden gilt

  1. Zu viele Daten zwischenspeichern: Das Zwischenspeichern übermäßig großer Datenmengen kann zu einer hohen Speicherauslastung führen und die Leistungssteigerung zunichte machen.
  2. Seltener Zugriff: Das Zwischenspeichern von Daten, auf die selten zugegriffen wird, lohnt sich möglicherweise nicht, da dadurch die Abrufzeiten nicht wesentlich verkürzt werden.
  3. Probleme mit veralteten Daten: Wenn sich Daten häufig ändern, legen Sie eine TTL fest, um die Bereitstellung veralteter Informationen zu vermeiden.

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage