(1) pom.xml présente le package JAR, comme suit:
<dependency> <proupId> org.springframework.boot </rombasid> <ArtefactId> printemp-boot-starter-data-redis </retifactid> </pedidency>
(2) Modifier la classe de démarrage du projet, ajouter Annotation @enableCaching et activer la fonction de mise en cache, comme suit:
package Springboot; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cache.annotation.enablecacheing; import; org.springframework.scheduling.annotation.enablesCeduling; @ SpringbootApplication @ Activedcheduling @ perteCachingPublic class SpringbootApplication {public static void Main (String [] args) {SpringApplication.Run (Springbootapplication.class, args); }}(3) Configurer les informations de connexion Redis dans Application.Properties, comme suit:
# Redis index de la base de données (par défaut est 0) spring.redis.database = 0 # redis Server Address Spring.redis.host = 172.31.19.222 # Redis Server Connection Port Spring.Redis.port = 6379 # Redis Server Connection Mot de passe (par défaut est vide) Spring.redis.Password = # Nombre maximum de connexions vers le pool de connexion (Utilisation de valeurs négatives Temps d'attente de blocage maximum pour le pool de connexion (en utilisant des valeurs négatives signifie aucune limite) Spring.redis.pool.max-wait = -1 # Connexion maximale de ralenti dans le pool de connexion Spring.redis.pool.min-idle = 8 # Connexion inactif minimum dans le pool de connexion Spring.redis.Timeout = 0 0 # Connexion (millisecondeds) Spring.redis.Timeout = 0
(4) Créez une nouvelle classe de configuration de cache Redis Redisconfig, comme suit:
package springboot.config; import org.springframework.beans.factory.annotation.value; import org.springframework.cache.cachemanager; import org.springframework.cache.annotation.cache.annoting.enabache; org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.data.redis.cache.recachemanager; import org.springframework.data.redis.connection.redisconnectionfactory; importation; org.springframework.data.redis.core.redistemplate; import org.springframework.data.redis.core.stringredistEmplate; import org.springframework.data.redis.serializer.jackson2jsonresserializer; import com.fasterxml.jackson.annotation.jsonaUtoDeTect; com.fasterxml.jackson.annotation.propertyaccessor; import com.fasterxml.jackson.databind.objectmapper; / ** * redis Cache Configuration class * @author szekinwin * * / @ configuration @ pertiablecachingPublic class redisconfig étend CachConfigurersupport { @Value ("$ {printemps.redis.host}") Hôte de chaîne privée; @Value ("$ {printemps.redis.port}") Private int port; @Value ("$ {printemps.redis.timeout}") Timeout private int; // Stratégie de génération de clé de cache personnalisée // @ bean // public keyGenerator keyGenerator () {// return new KeyGenerator () {// @ Override // public objet générate (objet Target, java.lang.reflect.method Method, objet ... params) {// stringbuffer sb = new StringBuffer (); // sb.append (cible.getClass (). getName ()); // sb.append (method.getName ()); // for (objet obj: params) {// return sb.append (obj.tostring ()); //} // return sb.tostring (); //} //} // // Cache Manager @Bean Public Cachemanager CacheManager (@SuppressWarnings ("RawTypes") Redemplate Redemplate) {RedisCacheManager CacheManager = New RedisCacheManager (Redemplate); // Définir le temps d'expiration du cache CacheManager.SetDefaultExpiration (10000); retour Cachemanager; } @Bean public Redistetemplate <String, String> reidemplate (redisconnectionfactory factory) {stringRedistemplate template = new StringRedIstemplate (factory); setSerializer (modèle); // définir le modèle d'outil de sérialisation.AfterProperTiESSET (); modèle de retour; } private void setSerializer (stringredistemplate modèle) {@SuppressWarnings ({"RawTypes", "Unchecked"}) jackson2jsonredisserializer jackson2jsonRisserializer = new Jackson2jsonRisserializer (object.class); ObjectMapper om = new ObjectMapper (); om.setVisibility (PropertyAccessor.all, jsonAutodetect.Visability.Any); OM.EnabledEfaultTyping (objectMapper.defaultTyping.Non_Final); jackson2jsonredisserializer.setObjectMapper (OM); Template.SetValueLeSerializer (jackson2jsonredisserializer); }}(5) Créez un nouvel usermappeur, comme suit:
Package Springboot.dao; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.mapper; import org.apache.ibatis.annotations.param; import org.apache.ibatis.annotations; org.apache.ibatis.annotations.update; import org.springframework.cache.annotation.cacheconfig; import org.springframework.cache.annotation.cacheevict; import org.springframework.cache.annotation.cacheput; import org.springframeworkworkwork.cache.annotation.cacheble; import org.springframeworkwork Springboot.domain.User; @ mapper @ cacheConfig (cachenames = "utilisateurs") interface publique UserMapper {@insert ("INSERT IN User (nom, âge) VALEURS (# {name}, # {{})") int AddUser (@param ("name") Nom de chaîne, @ param ("Age") String Age); @Select ("SELECT * FROM User Where id = # {id}") @cacheable (key = "# p0") utilisateur findbyid (@param ("id") String id); @Cacheput (key = "# p0") @upDate ("Update User set name = # {name} où id = # {id}") void UpdateById (@param ("id") String id, @ param ("name") String name); // Si spécifié comme vrai, tous les caches seront effacées immédiatement après que la méthode est appelée @cacheevict (key = "# p0", allentries = true) @delete ("supprimer de l'utilisateur où id = # {id}") void deleteById (@param ("id") String id);};@Cacheable Caches Le résultat de la requête à redis, (key = "# p0") Spécifie le premier paramètre passé comme la clé de Redis.
@Cacheput, spécifiez la clé, synchronisez les résultats mis à jour de redis
@Cacheevict, spécifiez la clé, supprimez les données de cache, Allentries = true, le cache sera effacée immédiatement après que la méthode soit appelée
(6) La couche de service et la couche de contrôleur sont intégrées comme l'article précédent. Démarrez le serveur Redis. Vous pouvez vous référer au blog précédent pour l'installation et le démarrage du serveur Redis. L'adresse est la suivante:
http://www.cnblogs.com/gdpuzxs/p/6623171.html
(7) Configurer les informations du journal comme suit:
## Configuration log4j log4j.rootcategory = débogage, sortie de la console ## stdout ## log4j.appender.stout = org.apache.log4j.consoleAppenderLog4j.appendender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern =% d {yyyymm-dd HH: MM: SS, SSS}% 5p % c {1}:% l -% m% n(8) Vérifiez le cache redis
Tout d'abord, nous insérons un élément de données dans la table utilisateur, et la base de données s'affiche comme suit:
Maintenant, interrogeons les données avec id = 24 dans le tableau utilisateur, et la sortie des informations de la console Guanzi est la suivante:
Grâce aux informations de sortie de la console, nous pouvons savoir que cette fois la requête de la base de données a été exécutée et les résultats de la requête de cache Redis ont été activés. Ensuite, nous interrogeons les données avec id = 24 dans le tableau utilisateur à nouveau et observons la console, comme suit:
Grâce aux informations de sortie de la console, nous pouvons savoir que cette fois, nous n'avons pas exécuté la requête de la base de données, mais les interroger à partir du cache Redis et renvoyé le résultat de la requête. Nous vérifions les informations dans Redis, comme suit:
La méthode Méthode FindUser utilise l'annotation @cacheable (key = "# p0"), ce qui signifie que l'ID est utilisé comme valeur clé dans Redis. Lorsque nous mettons à jour les données, nous devons utiliser @cacheput (key = "# p0") pour mettre à jour les données en cache, sinon les données sales seront interrogées.
Résumer
Ce qui précède est la méthode d'implémentation de Springboot à l'aide du cache Redis qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, laissez-moi un message et l'éditeur vous répondra à temps!