Table des matières
2. Connectez-vous à Redis à l'aide de Jedis (autonome)
3. Utilisez Redis avec Spring Boot (recommandé)
Configurer application.yml :
Activer la mise en cache:
Utilisez des annotations de mise en cache:
4. sérialiser les objets complexes
Conclusion
Maison Java javaDidacticiel Implémentation de mise en cache dans une application Java à l'aide de redis

Implémentation de mise en cache dans une application Java à l'aide de redis

Aug 07, 2025 am 05:11 AM

Installez et exécutez Redis et démarrez le service Redis à l'aide de la commande docker; 2. Ajouter des dépendances Redis pour Jedis ou Spring Boot dans le projet Maven; 3. Utilisez le client Jedis pour connecter Redis et implémenter SetEx pour définir le cache avec un temps d'expiration, faire attention à la fermeture de la connexion ou à l'utilisation du pool de connexion; 4. Configurer les paramètres Redis dans Spring Boot via Application.yml, activez l'annotation @EnableCaching et utilisez @Cacheable, @Cacheput et @Cacheevict pour implémenter la mise en cache au niveau de la méthode; 5. Personnaliser Redemplate pour utiliser Jackson2JSonRisserializer pour sérialiser les objets complexes au format JSON pour améliorer la lisibilité et les performances; 6. Suivez les meilleures pratiques: définissez TTL pour éviter les fuites de mémoire, utilisez des noms de clés significatifs, les manquements du cache de gérer gracieusement, utilisez des pools de connexion dans des environnements de production et montez l'état redis. Grâce à ces étapes, les applications Java peuvent intégrer efficacement le cache Redis, réduire considérablement la charge de base de données et améliorer la vitesse de réponse, réalisant finalement une couche d'accès aux données haute performance.

Implémentation de mise en cache dans une application Java à l'aide de redis

La mise en cache dans une application Java peut considérablement améliorer les performances en réduisant la charge de la base de données et en accélérant les temps de réponse. Redis est l'un des magasins de données en mémoire les plus populaires utilisés pour la mise en cache en raison de sa vitesse, de sa flexibilité et de son ensemble de fonctionnalités riches. Voici comment implémenter la mise en cache basée sur Redis dans une application Java.

Implémentation de mise en cache dans une application Java à l'aide de redis

1. Configurer Redis et dépendances

Tout d'abord, assurez-vous que Redis est installé et en cours d'exécution. Vous pouvez le télécharger à partir de redis.io ou utiliser Docker:

 Docker Run -P 6379: 6379 - Name redis-server -d redis

Ensuite, ajoutez les dépendances requises à votre pom.xml (pour maven):

Implémentation de mise en cache dans une application Java à l'aide de redis
 <dépendance>
    <GroupId> redis.clients </rombandid>
    <ArtefactId> Jedis </Retifactid>
    <version> 4.5.0 </ version> <! - Utilisez la dernière stable ->
</Dependance>

Alternativement, si vous utilisez Spring Boot, incluez:

 <dépendance>
    <GroupId> org.springFramework.boot </romp grouped>
    <ArtefactId> Spring-Boot-Starter-Data-Redis </Retifactid>
</Dependance>

2. Connectez-vous à Redis à l'aide de Jedis (autonome)

Jedis est un client Redis léger pour Java. Voici un exemple simple pour connecter et utiliser Redis:

Implémentation de mise en cache dans une application Java à l'aide de redis
 Importer redis.clients.jedis.Jedis;

classe publique Rediscache {
    Jedis Jedis privé;

    public rediscache () {
        this.jedis = new Jedis ("localhost", 6379);
    }

    public void set (clé de chaîne, valeur de chaîne) {
        Jedis.sex (Key, 3600, valeur); // Cache pendant 1 heure
    }

    public String get (string key) {
        return jedis.get (clé);
    }

    public void close () {
        if (jedis! = null) {
            jedis.close ();
        }
    }
}
  • setex(key, seconds, value) définit une clé avec un temps d'expiration (TTL), ce qui est essentiel pour éviter les données périmées.
  • Fermez toujours la connexion ou utilisez un pool de connexion en production.

3. Utilisez Redis avec Spring Boot (recommandé)

Spring Boot simplifie l'intégration Redis avec la configuration automatique et la mise en cache basée sur l'annotation.

Configurer application.yml :

 printemps:
  redis:
    Hôte: localhost
    Port: 6379
  Cache:
    Type: redis
    redis:
      Temps de vie: 3600000 # 1 heure en millions de secondes

Activer la mise en cache:

Ajouter @EnableCaching à votre classe d'application principale:

 @Springbootapplication
@Enablecaching
Application de classe publique {
    public static void main (String [] args) {
        SpringApplication.Run (application.class, args);
    }
}

Utilisez des annotations de mise en cache:

Appliquer @Cacheable , @CachePut et @CacheEvict sur les méthodes de service:

 @Service
classe publique UserService {

    @Cacheable (value = "utilisateurs", key = "#id")
    Utilisateur public getUserById (Long ID) {
        System.out.println ("Récupérer l&#39;utilisateur à partir de DB:" ID);
        // Simuler l&#39;appel DB
        return userRepository.FindById (id) .Orelse (null);
    }

    @Cacheput (valeur = "utilisateurs", key = "# user.id")
    Public User UpdateUser (utilisateur utilisateur) {
        // Mettre à jour l&#39;utilisateur et mettre à jour le cache
        return userRepository.save (utilisateur);
    }

    @Cacheevict (valeur = "utilisateurs", key = "#id")
    public void DeleteUser (long id) {
        userRepository.deleteById (id);
    }
}

Cela cache automatiquement le résultat de getUserById() , donc les appels ultérieurs avec le même ID ignorent la base de données.


4. sérialiser les objets complexes

Par défaut, Spring utilise la sérialisation JDK, qui n'est pas efficace. Personnalisez le modèle redis pour utiliser JSON:

 @Configuration
@Enablecaching
classe publique Redisconfig {

    @Haricot
    public reistetemplate <String, objet> redesttemplate (redéconnectionfactory usine) {
        Redistetemplate <String, objet> template = new redesttemplate <> ();
        template.setConnectionFactory (Factory);

        // Utilisez Jackson2jsonredisSerializer pour une meilleure lecture
        Jackson2jsonredisserializer <ser utilisateur> serializer = new jackson2jsonredisserializer <> (user.class);
        template.setValueLeSerializer (sérialiseur);
        template.setKeySerializer (new StringRedisSerializer ());
        Template.sethAshKeySerializer (new StringRedisSerializer ());
        template.sethAshValueSerializer (sérialiseur);
        template.afterpropertiseset ();

        modèle de retour;
    }
}

Désormais, des objets complexes comme User sont stockés au format JSON lisible dans Redis.


5. meilleures pratiques

  • Définissez TTL (temps pour vivre): définissez toujours l'expiration sur les données mises en cache pour éviter les fuites de mémoire.
  • Utilisez des clés significatives: les touches de structure comme user::123 ou product:category:latest .
  • Gire Cache manque gracieusement: si Redis est en panne, retombez dans la base de données (et enregistrez le problème).
  • Utilisez le regroupement de connexion: en production, configurez les Jedis ou la laitue avec la mise en commun.
  • Moniteur Redis: Utilisez redis-cli monitor ou les outils comme RedisInsight pour inspecter l'utilisation du cache.

Conclusion

L'utilisation de Redis pour la mise en cache en Java, en particulier avec Spring Boot, peut augmenter considérablement les performances avec un minimum de modifications de code. Que vous utilisiez des Jedis bruts pour un contrôle fin ou la mise en cache déclarative de Spring pour la simplicité, Redis fournit une couche rapide et fiable entre votre application et les sources de données lentes.

Fondamentalement: connectez Redis, les résultats de la méthode de cache, sérialisez intelligemment et expirez judicieusement les données. C'est le cœur.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Rimworld Odyssey Comment pêcher
1 Il y a quelques mois By Jack chen
Puis-je avoir deux comptes Alipay?
1 Il y a quelques mois By 下次还敢

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1506
276
Comment un hashmap fonctionne-t-il en interne en Java? Comment un hashmap fonctionne-t-il en interne en Java? Jul 15, 2025 am 03:10 AM

HashMap implémente le stockage de paires de valeurs clés via des tables de hachage en Java, et son noyau réside dans les emplacements de données de positionnement rapidement. 1. Utilisez d'abord la méthode HashCode () de la clé pour générer une valeur de hachage et la convertir en un index de tableau via les opérations de bit; 2. Différents objets peuvent générer la même valeur de hachage, entraînant des conflits. À l'heure actuelle, le nœud est monté sous la forme d'une liste liée. Après JDK8, la liste liée est trop longue (longueur par défaut 8) et elle sera convertie en arbre rouge et noir pour améliorer l'efficacité; 3. Lorsque vous utilisez une classe personnalisée comme clé, les méthodes equals () et hashcode () doivent être réécrites; 4. Hashmap élargit dynamiquement la capacité. Lorsque le nombre d'éléments dépasse la capacité et se multiplie par le facteur de charge (par défaut 0,75), se développez et remaniez; 5. Hashmap n'est pas en file et concu doit être utilisé dans multithread

Exemple facultatif Java Exemple facultatif Java Jul 12, 2025 am 02:55 AM

Facultatif peut clairement exprimer les intentions et réduire le bruit du code pour les jugements nuls. 1. Facultatif. Par exemple, lors de la prise de valeurs des cartes, Orelse peut être utilisée pour fournir des valeurs par défaut, afin que la logique soit plus claire et concise; 2. Utilisez des cartes d'appels de chaîne pour atteindre les valeurs imbriquées pour éviter en toute sécurité le NPE, et terminer automatiquement si un lien est nul et renvoie la valeur par défaut; 3. Le filtre peut être utilisé pour le filtrage conditionnel, et les opérations ultérieures ne continueront à être effectuées que si les conditions sont remplies, sinon elle sautera directement à Orelse, qui convient au jugement commercial léger; 4. Il n'est pas recommandé de surutiliser facultatif, tels que des types de base ou une logique simple, ce qui augmentera la complexité, et certains scénarios reviendront directement à NU.

Comment réparer Java.io.NotSerializableException? Comment réparer Java.io.NotSerializableException? Jul 12, 2025 am 03:07 AM

La solution de contournement principale pour la rencontre de Java.io.NotSerializableException est de s'assurer que toutes les classes qui doivent être sérialisées implémentent l'interface sérialisable et de vérifier le support de sérialisation des objets imbriqués. 1. Ajouter des ouvrages ImplementSerialisables à la classe principale; 2. Assurez-vous que les classes correspondantes de champs personnalisées de la classe implémentent également sérialisables; 3. Utilisez transitoire pour marquer les champs qui n'ont pas besoin d'être sérialisés; 4. Vérifiez les types non sérialisés dans les collections ou les objets imbriqués; 5. Vérifiez quelle classe n'implémente pas l'interface; 6. Considérez la conception de remplacement pour les classes qui ne peuvent pas être modifiées, telles que la sauvegarde des données clés ou l'utilisation de structures intermédiaires sérialisables; 7. Envisagez de modifier

Comment gérer les problèmes d'encodage des personnages en Java? Comment gérer les problèmes d'encodage des personnages en Java? Jul 13, 2025 am 02:46 AM

Pour faire face aux problèmes de codage des personnages en Java, la clé est de spécifier clairement le codage utilisé à chaque étape. 1. Spécifiez toujours le codage lors de la lecture et de l'écriture de texte, utilisez InputStreamReader et OutputStreamWriter et transmettez un jeu de caractères explicite pour éviter de s'appuyer sur le codage par défaut du système. 2. Assurez-vous que les deux extrémités sont cohérentes lors du traitement des chaînes sur la limite du réseau, définissez l'en-tête de type contenu correct et spécifiez explicitement le codage avec la bibliothèque. 3. Utilisez String.getBytes () et Newstring (octet []) avec prudence, et spécifiez toujours manuellement StandardCharsets.Utf_8 pour éviter la corruption des données causée par les différences de plate-forme. En bref, par

Fondamentaux et exemples de programmation Java Socket Fondamentaux et exemples de programmation Java Socket Jul 12, 2025 am 02:53 AM

La programmation Javasocket est la base de la communication réseau, et l'échange de données entre les clients et les serveurs est réalisé via Socket. 1. Le socket en Java est divisé en la classe de socket utilisée par le client et la classe SERVERSOCKET utilisée par le serveur; 2. Lors de la rédaction d'un programme de socket, vous devez d'abord démarrer le port d'écoute du serveur, puis lancer la connexion par le client; 3. Le processus de communication comprend l'établissement de connexion, la lecture et l'écriture des données et la fermeture du flux; 4. Les précautions incluent l'évitement des conflits de port, la configuration correcte des adresses IP, la fermeture raisonnable des ressources et la prise en charge de plusieurs clients. La maîtrise peut réaliser des fonctions de communication réseau de base.

Comparable vs comparateur en java Comparable vs comparateur en java Jul 13, 2025 am 02:31 AM

En Java, comparable est utilisé pour définir les règles de tri par défaut en interne et le comparateur est utilisé pour définir plusieurs logiques de tri à l'extérieur. 1. Comparable est une interface implémentée par la classe elle-même. Il définit l'ordre naturel en réécrivant la méthode compareto (). Il convient aux classes avec des méthodes de tri fixe et le plus couramment utilisées, telles que la chaîne ou le rendement. 2. Comparateur est une interface fonctionnelle définie à l'extérieur, implémentée via la méthode compare (), adaptée aux situations où plusieurs méthodes de tri sont requises pour la même classe, le code source de classe ne peut pas être modifié ou la logique de tri est souvent modifiée. La différence entre les deux est que comparable ne peut définir qu'une logique de tri et doit modifier la classe elle-même, tandis que comparable

Comment itérer sur une carte à Java? Comment itérer sur une carte à Java? Jul 13, 2025 am 02:54 AM

Il existe trois méthodes courantes pour traverser la carte dans Java: 1. Utilisez l'entrée pour obtenir des clés et des valeurs en même temps, ce qui convient à la plupart des scénarios; 2. Utilisez un ensemble de touches ou des valeurs pour traverser respectivement les clés ou les valeurs; 3. Utilisez Foreach de Java8 pour simplifier la structure du code. EntrySet renvoie un ensemble de set contenant toutes les paires de valeurs de clé, et chaque boucle obtient l'objet Map.Entry, adapté à un accès fréquent aux touches et aux valeurs; Si seules les clés ou les valeurs sont nécessaires, vous pouvez appeler respectivement KeySet () ou Values (), ou vous pouvez obtenir la valeur via map.get (key) lors de la traversée des clés; Java 8 peut utiliser ForEach ((clé, valeur) - & gt

Quel est le mot-clé «statique» en Java? Quel est le mot-clé «statique» en Java? Jul 13, 2025 am 02:51 AM

Injava, thestatickeywordmeansamemberbelongstotheclassitelf, nottoinstances.staticvariblesaresharedacrossallinstances et accessibles withoutObjectCreation, utileforglobaltrackingorconstants.staticMethodsoperatatheClasslevel, ne peut pas accessner-staticmembers,

See all articles