Maison  >  Article  >  base de données  >  Méthode d'intégration Redis du cache Springboot

Méthode d'intégration Redis du cache Springboot

WBOY
WBOYavant
2023-05-30 13:22:12730parcourir

    La valeur par défaut est d'utiliser ConcurrentMapCache de ConcurrentMapCacheManager comme composant de cache.

    Lors de l'utilisation de ConcurrentMap, les données sont enregistrées dans ConcurrentMap<object></object>.

    En fait, pendant le processus de développement, nous utilisons souvent des middleware de mise en cache.

    Par exemple, nous utilisons souvent Redis, Memcache, y compris l'ehcache que nous utilisons, etc. Nous utilisons tous des middleware de mise en cache.

    Lorsque nous avons expliqué le principe précédemment, nous avons également découvert que springboot prend en charge de nombreuses configurations de cache :

    Comme le montre la figure ci-dessous :

    Méthode dintégration Redis du cache Springboot

    La configuration de départ par défaut est : SimpleCacheConfiguration.

    Quand les autres caches sont-ils activés ?

    Nous pouvons rechercher ces classes de configuration avec ctrl+n, puis entrer et voir leurs conditions conditionnelles :

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Cela signifie que ces configurations ne fonctionneront que lorsque vous importerez le package correspondant. efficace.

    Intégrer Redis comme cache

    S'il y a des étudiants qui ne connaissent pas la technologie Redis, il existe une vidéo explicative de la série Redis publiée par le professeur Zhou Yang de Shang Silicon Valley. Ou vous pouvez visiter le site officiel de Redis le plus rapidement possible pour apprendre que redis.cn est le site Web chinois pour l'apprentissage de Redis.

    Installer redis

    Rechercher l'image redis

    Méthode dintégration Redis du cache Springboot

    Ceci est connecté à un entrepôt étranger et la vitesse est relativement lente.

    Nous vous recommandons d'utiliser Docker Chine.

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    docker pull Registry.docker-cn.com/library/redis

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Démarrez l'image Redis

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

    Pour tester, ouvrez l'outil de connexion Redis. Gestionnaire de bureau Redis

    liste des opérations redis

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Opération d'ensemble Redis

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache SpringbootPrésentation de Redis Starter

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Configurer redis

    Méthode dintégration Redis du cache Springboot

    #🎜🎜 # Parlons brièvement du principe de redis

    Après avoir introduit le démarreur redis, redisAutoConfiguration a pris effet.

    Méthode dintégration Redis du cache Springboot

    Cette RedisAutoConfiguration ajoute deux composants au conteneur :

    Méthode dintégration Redis du cache Springboot#🎜 🎜# Ajouter composants au conteneur, l'un s'appelle RedisTemplate et l'autre s'appelle StringRedisTemplate, deux choses.

    Ces deux choses sont utilisées pour faire fonctionner Redis.

    C'est le même que le jdbcTemplate que tout le monde utilisait auparavant, utilisé pour faire fonctionner la base de données.

    Ce sont les deux modèles que Spring utilise pour simplifier le fonctionnement de Redis. Si vous souhaitez utiliser ces deux éléments dans le programme, injectez-les simplement automatiquement. # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # redis test # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # #

    Méthode dintégration Redis du cache Springboot

    redis liste des opérations :

    Méthode dintégration Redis du cache Springboot

    #🎜 🎜#

    Méthode dintégration Redis du cache Springboot

    redis test save object

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Ces choses incompréhensibles sont toutes le résultat de la sérialisation . # 🎜🎜 ## 🎜🎜 # Règles de sérialisation par défaut Redemplate # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # # 🎜 🎜#Méthode dintégration Redis du cache SpringbootLe sérialiseur par défaut est le JdkSerializationRedisSerializer utilisé.

    Le sérialiseur par défaut est le sérialiseur JDK utilisé. Méthode dintégration Redis du cache Springboot

    Passons au sérialiseur json et c'est tout.

    Méthode dintégration Redis du cache Springbootredis configuration

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Dans la classe de test, nous sommes automatiquement injecté Configurez votre propre redisTemplate.

    Méthode dintégration Redis du cache Springboot Puis on teste à nouveau la sauvegarde de l'objet.

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Cela montre que notre modification du sérialiseur a réussi.

    Cela montre clairement que si nous voulons enregistrer l'objet plus tard, nous devons souvent modifier le sérialiseur.

    Tester le cache

    Méthode dintégration Redis du cache Springboot

    Nous avons déjà utilisé le gestionnaire de cache de ConCurrentMap.
    Ce gestionnaire de cache nous aide à créer des composants de cache.
    Le composant cache est utilisé pour mettre en cache et effectuer un travail CRUD.

    Maintenant que nous avons introduit Redis, que va-t-il se passer ?
    Nous définissons toujours debug=true dans application.properties afin que le rapport de configuration automatique puisse être activé.
    A ce moment, nous redémarrons notre programme et recherchons dans la console.
    Voyons quelle classe de configuration automatique est efficace ?

    Méthode dintégration Redis du cache Springboot

    La valeur par défaut d'origine est : SimpleCacheConfiguration.

    Maintenant que nous avons introduit les démarreurs liés à Redis, le programme active RedisCacheConfiguration par défaut.

    Méthode dintégration Redis du cache Springboot

    Démarrez simplement le programme et testez-le directement.

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Cela signifie que lorsque vous interrogez pour la première fois, vous interrogez la base de données.

    Lors de la deuxième interrogation, il n'y avait aucune sortie sur la console, indiquant que le cache avait été interrogé.

    Le cache n'est activé que par Redis par défaut.

    Alors il doit être en redis.

    Nous pouvons le vérifier :

    Méthode dintégration Redis du cache Springboot

    Cela illustre un problème lorsque k et v sont tous deux des objets, ils sont enregistrés. par défaut, les objets sont enregistrés à l'aide de la sérialisation. Nous voulons que Redis l'enregistre automatiquement au format JSON.

    Que devons-nous faire ?

    Analysons d’abord les principes de ces processus.

    1. Nous avons introduit le starter de redis, donc notre cachemanager est devenu rediscachemanager,

    2 Lorsque le rediscachemanager est créé par défaut et exploite nos données, il passe Inséré. une chose de remodelage.

    Méthode dintégration Redis du cache Springboot

    3. Ce redistemplate a été créé pour nous par redisautoconfiguration. Le mécanisme de sérialisation par défaut utilisé par ce remodèle est jdkserializationredisserializer. Cela équivaut au fait que le redisCacheManager que redis nous empêche par défaut ne répond pas tout à fait à nos exigences.

    Que devons-nous faire ?

    Nous devrions personnaliser CacheManager.

    RedisCacheManager personnalisé

    Méthode dintégration Redis du cache Springboot

    À ce moment, nous recommençons le projet pour les tests. À ce moment, nous pouvons voir Le. le résultat en redis est ce que nous voulons.

    Méthode dintégration Redis du cache Springboot

    Lors de la prochaine interview, Yun Qiu pourra demander à ceux qui veulent venir au parc logiciel, connaissez-vous le starter redis ? Lors de l'enregistrement d'objets, quelles sont les règles de sérialisation par défaut de redisTemplate ?

    Si nous souhaitons modifier les règles de sérialisation par défaut lors de l'utilisation de Redis, que devons-nous faire ?

    Nous pouvons personnaliser redisCacheManager, puis personnaliser redisTemplate et transmettre le sérialiseur lié à json dans redisTemplate.

    Méthode dintégration Redis du cache Springboot

    Petits problèmes restants

    Base de données

    Ce que nous avons dans la base de données , mettez une donnée dans la table du département :

    Méthode dintégration Redis du cache Springboot

    mapper

    Nous écrivons un mapper correspondant au fonctionnement du département.

    Méthode dintégration Redis du cache Springboot

    service

    Écrivons un service correspondant

    Méthode dintégration Redis du cache Springboot#🎜 🎜#

    controller

    Méthode dintégration Redis du cache Springboot

    Commencer les tests du projet

    Méthode dintégration Redis du cache Springboot

    Alors allons-y voir s'il y a des données dans Redis ?

    Méthode dintégration Redis du cache Springboot

    Nous avons vu qu'il existe des données liées au département dans Redis.

    Lorsque nous interrogeons Dept pour la deuxième fois, nous devons utiliser Redis en cache.

    Mais lorsque nous avons vérifié pour la deuxième fois, l'erreur suivante s'est produite.

    Error

    Méthode dintégration Redis du cache Springboot

    L'erreur signalée ci-dessus signifie que le json ne peut pas être lu.

    Parce qu'il faut convertir l'objet json du service en objet json du collaborateur, ce qui n'est pas possible.

    C'est parce que le redisCacheManager que nous avons placé est destiné aux employés opérationnels.

    Méthode dintégration Redis du cache Springboot

    Donc, l'effet que nous voyons maintenant est très magique.

    Les données mises en cache peuvent être stockées dans Redis.

    Mais lorsque nous interrogeons le cache pour la deuxième fois, nous ne pouvons pas le désérialiser.

    Il s'avère que ce que nous stockons sont les données JSON du département, et notre gestionnaire de cache utilise le modèle de l'employé pour faire fonctionner Redis par défaut.

    Cette chose ne peut que désérialiser les données des employés.

    Résoudre les erreurs

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    À ce moment, il est égal à 2 Il existe deux redisCacheManagers, lequel devons-nous utiliser ?

    Nous pouvons le préciser dans le service.

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache Springboot

    Ensuite, nous avons relancé le projet, et le résultat était une erreur :

    # 🎜🎜#

    Méthode dintégration Redis du cache Springboot

    Si nous avons plusieurs cacheManagers, nous devons utiliser un certain cacheManager comme gestionnaire de cache configuré par défaut.

    Par exemple, nous pouvons effectuer les opérations suivantes pour corriger le contenu de cette erreur de démarrage :

    Méthode dintégration Redis du cache Springboot

    Redémarrer le test du projet# 🎜🎜#

    À ce stade, voyons si nous pouvons désérialiser et lire notre département depuis Redis normalement et avec succès lors de l'exécution de la deuxième requête du département. Où sont les informations ?

    Méthode dintégration Redis du cache Springboot

    Méthode dintégration Redis du cache SpringbootA cette époque, nous avons découvert que que ce soit un employé ou un service, nous pouvons tout le monde apprend de La désérialisation dans Redis est interrogée avec succès.

    C'est parfait.

    Méthode de codage pour faire fonctionner le cache

    Ce que nous avons dit auparavant consiste à utiliser des annotations pour placer des données dans le cache.

    Cependant, lors du développement, nous rencontrons souvent de telles situations.

    C'est-à-dire que lorsque notre développement atteint un certain stade, nous devons mettre certaines données dans le cache.

    Nous devons utiliser du codage pour faire fonctionner le cache.

    Par exemple, après avoir interrogé les informations du département, nous souhaitons mettre ces informations dans Redis.

    On peut injecter le cacheManager du département.

    Méthode dintégration Redis du cache Springboot Puis pendant le processus d'encodage, on peut obtenir le cache en exploitant ce cacheManager,

    Ensuite, faire fonctionner le cache Component pour ajouter, supprimer, modifier et vérifier des données.

    Méthode dintégration Redis du cache Springboot Nous avons testé le code ci-dessus et démarré le projet, et avons constaté que tout allait bien et que les données ont été mises avec succès dans Redis : #🎜 🎜#

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer