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 :
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 :
Cela signifie que ces configurations ne fonctionneront que lorsque vous importerez le package correspondant. efficace.
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.
Rechercher l'image redis
Ceci est connecté à un entrepôt étranger et la vitesse est relativement lente.
Nous vous recommandons d'utiliser Docker Chine.
docker pull Registry.docker-cn.com/library/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 redisOpération d'ensemble Redis
Présentation de Redis Starter
#🎜 🎜# 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 # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # #
Ces choses incompréhensibles sont toutes le résultat de la sérialisation . # 🎜🎜 ## 🎜🎜 # Règles de sérialisation par défaut Redemplate # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # # 🎜 🎜#Le sérialiseur par défaut est le JdkSerializationRedisSerializer utilisé.
Le sérialiseur par défaut est le sérialiseur JDK utilisé.
Passons au sérialiseur json et c'est tout.redis configuration
Dans la classe de test, nous sommes automatiquement injecté Configurez votre propre redisTemplate.
Puis on teste à nouveau la sauvegarde de l'objet.
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 cacheNous 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 ?
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.
Démarrez simplement le programme et testez-le directement.
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 :
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.
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.
À 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.
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.
Ce que nous avons dans la base de données , mettez une donnée dans la table du département :
Nous écrivons un mapper correspondant au fonctionnement du département.
Écrivons un service correspondant
#🎜 🎜#
controller Commencer les tests du projet Alors allons-y voir s'il y a des données dans Redis ?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.
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.
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.
À ce moment, il est égal à 2 Il existe deux redisCacheManagers, lequel devons-nous utiliser ?
Nous pouvons le préciser dans le service.
Ensuite, nous avons relancé le projet, et le résultat était une erreur :
# 🎜🎜# 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 : Redémarrer le test du projet# 🎜🎜#A 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
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.
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.
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!