Heim  >  Artikel  >  Datenbank  >  Springboot-Cache-Redis-Integrationsmethode

Springboot-Cache-Redis-Integrationsmethode

WBOY
WBOYnach vorne
2023-05-30 13:22:12729Durchsuche

    Der Standardwert ist ConcurrentMapCache von ConcurrentMapCacheManager als Cache-Komponente.

    Bei Verwendung von ConcurrentMap werden die Daten in ConcurrentMap<object></object> gespeichert.

    Tatsächlich verwenden wir während des Entwicklungsprozesses häufig Caching-Middleware.

    Zum Beispiel verwenden wir häufig Redis, Memcache, einschließlich des von uns verwendeten Ehcaches usw. Wir alle verwenden Caching-Middleware.

    Als wir das Prinzip zuvor erklärt haben, haben wir auch festgestellt, dass Springboot viele Cache-Konfigurationen unterstützt:

    Wie in der folgenden Abbildung gezeigt:

    Springboot-Cache-Redis-Integrationsmethode

    Die Standardstartkonfiguration ist: SimpleCacheConfiguration.

    Wann sind andere Caches aktiviert?

    Wir können mit Strg + N nach diesen Konfigurationsklassen suchen und dann hineingehen und ihre Bedingungsbedingungen sehen:

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Dies alles bedeutet, dass diese Konfigurationen wirksam werden, wenn Sie das entsprechende Paket importieren.

    Redis als Cache integrieren

    Wenn es Schüler gibt, die die Technologie von Redis nicht kennen, gibt es ein Erklärungsvideo der Redis-Serie, das von Lehrer Zhou Yang im Shang Silicon Valley veröffentlicht wurde. Oder besuchen Sie so schnell wie möglich die offizielle Website von Redis, um mehr darüber zu erfahren. Redis.cn ist die chinesische Website für Redis-Lernen.

    Redis installieren

    Suche nach Redis-Image

    Springboot-Cache-Redis-Integrationsmethode

    Dies ist mit einem ausländischen Lager verbunden und die Geschwindigkeit ist relativ langsam.

    Wir empfehlen die Verwendung von Docker China.

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Docker Pull Registry.docker-cn.com/library/redis

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Starten Sie das Redis-Image

    docker run -d -p 6379:6379 --name myredis [REPOSITORY]
    docker ps

    Öffnen Sie zum Testen das Redis-Verbindungstool. „Redis Desktop Manager“

    Redis-Operationsliste

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Redis-Set-Betrieb

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-IntegrationsmethodeWir stellen den Redis-Starter vor

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Redis konfigurieren

    Springboot-Cache-Redis-Integrationsmethode

    #🎜 🎜# Lassen Sie uns kurz über das Prinzip von Redis sprechen

    Nachdem wir den Redis-Starter eingeführt hatten, trat redisAutoConfiguration in Kraft.

    Springboot-Cache-Redis-Integrationsmethode

    Diese RedisAutoConfiguration fügt dem Container zwei Komponenten hinzu:

    Springboot-Cache-Redis-Integrationsmethode#🎜 🎜# Hinzufügen Komponenten in den Container, eine heißt RedisTemplate und die andere heißt StringRedisTemplate, zwei Dinge.

    Diese beiden Dinge werden zum Betrieb von Redis verwendet.

    Dies ist das gleiche wie die jdbcTemplate, die alle zuvor zum Betrieb der Datenbank verwendet haben.

    Dies sind die beiden Vorlagen, die Spring verwendet, um die Bedienung von Redis zu vereinfachen. Wenn Sie diese beiden Dinge im Programm verwenden möchten, fügen Sie sie einfach automatisch ein. #? #

    Springboot-Cache-Redis-Integrationsmethode

    Redis-Operationsliste:

    Springboot-Cache-Redis-Integrationsmethode

    #🎜 🎜#

    Springboot-Cache-Redis-Integrationsmethode

    Redis-Testobjekt speichern

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Diese unverständlichen Dinge sind alle das Ergebnis der Serialisierung. #🎜🎜 ## 🎜🎜#redistemplate Standard -Serialisierungsregeln#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜##🎜 🎜 🎜#Springboot-Cache-Redis-IntegrationsmethodeDer Standard-Serializer ist der verwendete JdkSerializationRedisSerializer.

    Der Standard-Serializer ist der verwendete JDK-Serializer. Springboot-Cache-Redis-Integrationsmethode

    Wechseln wir zum JSON-Serializer und fertig.

    Springboot-Cache-Redis-IntegrationsmethodeRedis-Konfiguration

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    In der Testklasse sind wir automatisch dabei injiziert Konfigurieren Sie Ihr eigenes redisTemplate.

    Springboot-Cache-Redis-Integrationsmethode Anschließend testen wir das Speichern des Objekts erneut.

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Dies zeigt, dass unsere Serializer-Modifikation erfolgreich war.

    Dadurch wird deutlich, dass wir häufig den Serializer ändern müssen, wenn wir das Objekt später speichern möchten.

    Cache testen

    Springboot-Cache-Redis-Integrationsmethode

    Wir haben zuvor den Cache-Manager von ConCurrentMap verwendet.
    Dieser Cache-Manager hilft uns beim Erstellen von Cache-Komponenten.
    Die Cache-Komponente wird zum tatsächlichen Zwischenspeichern und Durchführen von CRUD-Arbeiten verwendet.

    Was wird nun passieren, nachdem wir Redis eingeführt haben?
    Wir setzen immer noch debug=true in application.properties, damit der automatische Konfigurationsbericht aktiviert werden kann.
    Zu diesem Zeitpunkt starten wir unser Programm neu und suchen in der Konsole.
    Mal sehen, welche automatische Konfigurationsklasse effektiv ist?

    Springboot-Cache-Redis-Integrationsmethode

    Es stellt sich heraus, dass SimpleCacheConfiguration standardmäßig aktiviert ist.

    Nachdem wir die Redis-bezogenen Starter eingeführt haben, aktiviert das Programm standardmäßig RedisCacheConfiguration.

    Springboot-Cache-Redis-Integrationsmethode

    Einfach das Programm starten und direkt testen.

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Das bedeutet, dass Sie bei der ersten Abfrage die Datenbank abfragen.

    Bei der zweiten Abfrage gab es keine Ausgabe auf der Konsole, was darauf hinweist, dass der Cache abgefragt wurde.

    Cache ist standardmäßig nur von Redis aktiviert.

    Dann muss es in Redis sein.

    Wir können es überprüfen:

    Springboot-Cache-Redis-Integrationsmethode

    Dies veranschaulicht ein Problem, wenn k und v beide Objekte sind, werden sie gespeichert Standardmäßig werden Objekte mithilfe der Serialisierung gespeichert. Wir möchten, dass Redis es automatisch als JSON speichert.

    Was sollen wir tun?

    Lassen Sie uns zunächst die Prinzipien dieser Prozesse analysieren.

    1. Wir haben den Starter von Redis eingeführt, daher ist unser Cachemanager zum Rediscachemanager geworden,

    2. Wenn der Rediscachemanager standardmäßig erstellt wird und unsere Daten verarbeitet, wird er eingefügt eine Redestemplate-Sache.

    Springboot-Cache-Redis-Integrationsmethode

    3 Dieses Redistemplate wurde für uns von redisautoconfiguration erstellt. Der von dieser Redistemplate verwendete Standard-Serialisierungsmechanismus ist jdkserializationredisserializer. Dies entspricht der Tatsache, dass der von Redis standardmäßig verhinderte redisCacheManager unseren Anforderungen nicht ganz entspricht.

    Was sollen wir tun?

    Wir sollten CacheManager anpassen.

    Angepasster redisCacheManager

    Springboot-Cache-Redis-Integrationsmethode

    Zu diesem Zeitpunkt können wir das Projekt erneut zum Testen starten Ergebnis in Redis ist das, was wir wollen.

    Springboot-Cache-Redis-Integrationsmethode

    Während des nächsten Interviews kann Yun Qiu diejenigen, die in den Softwarepark kommen möchten, fragen: Kennen Sie den Redis-Starter? Was sind die Standard-Serialisierungsregeln von redisTemplate beim Speichern von Objekten?

    Was sollen wir tun, wenn wir die Standard-Serialisierungsregeln bei Verwendung von Redis ändern möchten?

    Wir können redisCacheManager anpassen, dann redisTemplate anpassen und den JSON-bezogenen Serializer in redisTemplate übergeben.

    Springboot-Cache-Redis-Integrationsmethode

    Wenig verbleibende Probleme

    Datenbank

    Was wir in der Datenbank haben , fügen Sie ein Datenelement in die Abteilungstabelle ein:

    Springboot-Cache-Redis-Integrationsmethode

    Mapper

    Wir schreiben einen Mapper, der dem Abteilungsvorgang entspricht.

    Springboot-Cache-Redis-Integrationsmethode

    Service

    Lassen Sie uns einen entsprechenden Service schreiben

    Springboot-Cache-Redis-Integrationsmethode#🎜 🎜#

    Controller

    Springboot-Cache-Redis-Integrationsmethode

    Projekttest starten

    Springboot-Cache-Redis-Integrationsmethode

    Dann lasst uns Sehen Sie, ob Daten in Redis vorhanden sind?

    Springboot-Cache-Redis-Integrationsmethode

    Wir haben einen Blick darauf geworfen und festgestellt, dass Redis abteilungsbezogene Daten enthält.

    Wenn wir die Abteilung zum zweiten Mal abfragen, sollten wir Caching Redis verwenden.

    Aber als wir zum zweiten Mal nachschauten, trat der folgende Fehler auf.

    Fehler

    Springboot-Cache-Redis-Integrationsmethode

    Der oben gemeldete Fehler bedeutet, dass JSON nicht gelesen werden kann.

    Weil es notwendig ist, das JSON-Objekt der Abteilung in das JSON-Objekt des Mitarbeiters umzuwandeln, was nicht möglich ist.

    Das liegt daran, dass der von uns platzierte redisCacheManager für Betriebsmitarbeiter gedacht ist.

    Springboot-Cache-Redis-Integrationsmethode

    Der Effekt, den wir jetzt sehen, ist also sehr magisch.

    Zwischengespeicherte Daten können in Redis gespeichert werden.

    Aber wenn wir den Cache zum zweiten Mal abfragen, können wir ihn nicht wieder deserialisieren.

    Es stellt sich heraus, dass wir die JSON-Daten der Abteilung speichern und unser Cachemanager standardmäßig die Vorlage des Mitarbeiters verwendet, um Redis zu betreiben.

    Dieses Ding kann nur Mitarbeiterdaten deserialisieren.

    Lösen Sie den Fehler

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Zu diesem Zeitpunkt gibt es zwei redisCacheManager. Welchen sollten wir verwenden?

    Wir können es im Service angeben.

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Dann haben wir das Projekt neu gestartet und das Ergebnis war ein Fehler:

    Springboot-Cache-Redis-Integrationsmethode

    Wenn wir mehrere CacheManager haben, müssen wir einen bestimmten CacheManager als Standardkonfiguration für die Cache-Verwaltung des Geräts verwenden.

    Zum Beispiel können wir die folgenden Vorgänge ausführen, um den Inhalt dieses Startfehlers zu beheben:

    Springboot-Cache-Redis-Integrationsmethode

    Neustart für Projekttests

    Werfen Sie zu diesem Zeitpunkt einen Blick darauf, ob wir bei der zweiten Abteilungsanfrage eine Deserialisierung durchführen können und unsere Abteilungsinformationen von Redis normal und erfolgreich lesen?

    Springboot-Cache-Redis-Integrationsmethode

    Springboot-Cache-Redis-Integrationsmethode

    Zu diesem Zeitpunkt stellten wir fest, dass wir Redis erfolgreich deserialisieren und abfragen können, unabhängig davon, ob es sich um einen Mitarbeiter oder eine Abteilung handelt.

    Das ist perfekt.

    Operations-Cache mit Codierung

    Was wir zuvor gesagt haben, ist die Verwendung von Anmerkungen, um Daten im Cache zu platzieren.

    Während der Entwicklung stoßen wir jedoch häufig auf solche Situationen.

    Das heißt, wenn unsere Entwicklung ein bestimmtes Stadium erreicht, müssen wir einige Daten in den Cache legen.

    Wir müssen Codierung verwenden, um den Cache zu betreiben.

    Nachdem wir beispielsweise die Abteilungsinformationen abgefragt haben, möchten wir diese Informationen in Redis einfügen.

    Wir können den CacheManager der Abteilung einbinden.

    Springboot-Cache-Redis-Integrationsmethode

    Dann können wir während des Codierungsprozesses den Cache erhalten, indem wir diesen CacheManager bedienen.

    Dann können wir die Cache-Komponente bedienen, um die Daten hinzuzufügen, zu löschen, zu ändern und zu überprüfen.

    Springboot-Cache-Redis-Integrationsmethode

    Wir haben den obigen Code getestet und das Projekt gestartet und festgestellt, dass er in Ordnung ist und die Daten erfolgreich in Redis eingegeben wurden:

    Springboot-Cache-Redis-Integrationsmethode

    Das obige ist der detaillierte Inhalt vonSpringboot-Cache-Redis-Integrationsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen