Comment utiliser le cache Redis en Java avec GroupDocs.Conversion

Redis est un magasin de structures de données en mémoire qui prend en charge les chaînes, les hachages, les listes, les ensembles, et plus encore. Redis est un puissant magasin de structures de données open‑source en mémoire qui peut agir comme base de données, cache et courtier de messages. Lorsque vous apprenez comment utiliser Redis avec GroupDocs.Conversion, vous offrez à votre application Java une couche de cache à action rapide qui réduit considérablement la latence de conversion de documents. Dans ce guide, nous parcourrons un tutoriel complet sur le cache Redis en Java, de la configuration de l’environnement à l’utilisation en situation réelle, afin que vous puissiez constater immédiatement des gains de performance.

Réponses rapides

  • Quel est le principal avantage d’utiliser Redis avec GroupDocs ? Récupération de documents plus rapide en évitant les conversions répétées.
  • Quel artefact Maven ajoute GroupDocs.Conversion ? com.groupdocs:groupdocs-conversion.
  • Comment connecter Java à Redis ? Utilisez un exemple de connexion Redis Java tel que ConnectionMultiplexer.Connect("localhost").
  • Puis-je personnaliser les clés de cache ? Oui – le redis cache key prefix vous permet d’organiser les entrées.
  • Une licence est‑elle requise pour la production ? Oui, une licence valide de GroupDocs.Conversion est nécessaire.

ConnectionMultiplexer est la classe cliente de la bibliothèque StackExchange.Redis qui gère les connexions à un serveur Redis.

Qu’est-ce que GroupDocs.Conversion pour Java ?

GroupDocs.Conversion pour Java est une bibliothèque qui convertit plus de 80 formats de fichiers en PDF, images et autres sorties. Elle fournit une API unifiée pour des transformations de documents côté serveur de haute qualité sans nécessiter d’installations Microsoft Office. Elle prend en charge la conversion vers PDF, images, HTML et de nombreux autres formats, et inclut des options de filigrane, pagination et paramètres de rendu personnalisés.

Pourquoi utiliser Redis avec GroupDocs.Conversion ?

Utiliser Redis comme couche de cache peut réduire le temps de conversion de jusqu’à 90 % pour les requêtes répétées, et diminuer l’utilisation du CPU d’environ 70 % lors du traitement de gros lots. Des affirmations quantifiées comme celles‑ci montrent clairement pourquoi de nombreuses entreprises adoptent ce modèle pour des services de documents à haut débit.

Prérequis

Bibliothèques et dépendances requises

  1. Java Development Kit (JDK) : Version 8 ou supérieure.
  2. Redis Server : En cours d’exécution localement ou accessible à distance.
  3. GroupDocs.Conversion pour Java : Ajouté via Maven (voir la section maven dependency groupdocs ci‑dessous).

Configuration de l’environnement

  • Installez Redis en suivant this guide.
  • Configurez votre IDE (IntelliJ IDEA, Eclipse, etc.) avec le JDK approprié.

Prérequis de connaissances

  • Concepts de base en Java et POO.
  • Familiarité avec Maven pour la gestion des dépendances.
  • Compréhension des principes de mise en cache et de leur importance pour la conversion de documents.

Configuration de GroupDocs.Conversion pour Java

La bibliothèque GroupDocs.Conversion est le moteur principal qui effectue les transformations de format. Ajoutez le fragment Maven suivant à votre pom.xml pour récupérer le package officiel :

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/conversion/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-conversion</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

Acquisition de licence

  1. Essai gratuit : Inscrivez‑vous sur GroupDocs pour télécharger une version d’essai.
  2. Licence temporaire : Demandez une licence temporaire pour une évaluation prolongée depuis la page d’achat.
  3. Achat : Pour une utilisation commerciale, achetez une licence via leur page d’achat.

Une fois la licence obtenue, vous pouvez instancier le convertisseur :

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.ConvertOptions;

// Initialize the Converter object with a document path
Converter converter = new Converter("path/to/your/document");

Guide d’implémentation

Vue d’ensemble de l’intégration du cache Redis

Nous créerons une classe personnalisée RedisCache qui implémente ICache. Cette classe montre un exemple de connexion java redis et explique comment travailler avec le redis cache key prefix.

RedisCache est une implémentation personnalisée de l’interface ICache de GroupDocs qui stocke les résultats de conversion dans Redis.

Étape 1 : Créer la classe RedisCache

Ci‑dessous se trouve l’implémentation complète. Conservez le code exactement tel qu’il est affiché ; il comprend tous les imports requis et la logique de gestion des clés de cache.

import com.groupdocs.conversion.caching.ICache;
import StackExchange.Redis;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.List;

public class RedisCache implements ICache, AutoCloseable {
    private String _cacheKeyPrefix = "GroupDocs:";
    private ConnectionMultiplexer _redis;
    private IDatabase _db;
    
    public RedisCache() {
        _redis = ConnectionMultiplexer.Connect("localhost");
        _db = _redis.GetDatabase();
    }

    public void Set(String key, Serializable data) throws IOException {
        String prefixedKey = GetPrefixedKey(key);
        try (ObjectOutputStream oos = new ObjectOutputStream(_db.StreamWrite())) {
            oos.writeObject(data);
            _db.StringSet(prefixedKey, oos.toString());
        }
    }

    public boolean TryGetValue(String key, Object value) {
        String prefixedKey = GetPrefixedKey(key);
        byte[] serializedData = _db.StringGet(prefixKey).ToArray();
        if (serializedData != null) {
            try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(serializedData))) {
                value = ois.readObject();
                return true;
            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        return false;
    }

    public List<String> GetKeys(String filter) {
        return _db.Keys(_cacheKeyPrefix + "*" + filter + "*").Select(k -> k.ToString().Replace(_cacheKeyPrefix, "")).ToList();
    }

    private String GetPrefixedKey(String key) {
        return _cacheKeyPrefix + key;
    }

    @Override
    public void close() throws Exception {
        _redis.Dispose();
    }
}

Étape 2 : Utiliser le cache Redis avec GroupDocs.Conversion

Nous allons maintenant intégrer le cache dans un flux de conversion. Cet extrait montre un exemple de convert documents pdf java qui vérifie d’abord le cache avant d’appeler GroupDocs.Conversion.

// Example usage of RedisCache with GroupDocs.Conversion
public void ConvertAndCacheDocument(String filePath) throws IOException {
    String cacheKey = "converted:" + filePath;
    Object cachedResult;

    if (cacheRedis.TryGetValue(cacheKey, cachedResult)) {
        System.out.println("Retrieved from cache: " + cachedResult);
    } else {
        // Perform conversion
        Converter converter = new Converter(filePath);
        ConvertOptions options = new PdfConvertOptions();
        byte[] result = converter.Convert(() -> new ByteArrayOutputStream(), options);

        // Cache the conversion result
        cacheRedis.Set(cacheKey, result);
        System.out.println("Conversion performed and cached.");
    }
}

Options de configuration des clés

  • _cacheKeyPrefix – Ajustez ce redis cache key prefix pour regrouper les entrées liées (par ex., "Docs:").
  • Paramètres ConnectionMultiplexer – Ajustez le pool de connexions, les délais d’attente ou SSL pour les clusters Redis distribués.

Comment Redis améliore-t-il la vitesse de conversion ?

Chargez le document une fois, stockez le tableau d’octets résultant dans Redis, puis récupérez‑le lors des appels suivants – cela élimine le besoin de conversions répétées et gourmandes en CPU. En mettant en cache la sortie binaire, vous réduisez le temps de réponse moyen de plusieurs secondes à quelques millisecondes, surtout pour les documents populaires consultés fréquemment.

Qu’est-ce que le préfixe de clé du cache Redis ?

Le redis cache key prefix est une courte chaîne préfixée à chaque clé d’entrée du cache, vous permettant de segmenter les données (par ex., "Docs:" pour les caches de documents, "Thumb:" pour les miniatures). Utiliser un préfixe unique évite les collisions accidentelles de clés lorsque plusieurs applications partagent la même instance Redis.

Comment configurer la connexion Redis en Java ?

Créez une instance ConnectionMultiplexer avec l’adresse du serveur Redis, en fournissant éventuellement le mot de passe et les paramètres SSL. Pour une configuration locale simple, appelez ConnectionMultiplexer.Connect("localhost"). Pour des clusters de production, transmettez une liste d’extrémités de nœuds séparées par des virgules et configurez ConfigurationOptions pour le basculement et l’équilibrage de charge.

Comment vider le cache Redis programmétiquement ?

Appelez la méthode KeyDelete de la base de données Redis avec un motif correspondant à vos clés préfixées (par ex., _db.KeyDelete("Docs:*")). Cela supprime tous les résultats de conversion mis en cache en une seule opération, utile lors des déploiements ou lorsque les fichiers source sous‑jacent changent. Vous pouvez également utiliser la commande SCAN pour parcourir les clés correspondantes avant la suppression, ce qui est plus sûr pour les grands ensembles de données.

KeyDelete est une méthode du client de base de données Redis qui supprime les clés correspondant à un motif donné.

Applications pratiques

  1. Flux de conversion de documents : Mettre en cache les sorties PDF ou image pour servir instantanément les requêtes répétées.
  2. Réseaux de diffusion de contenu (CDN) : Stocker les binaires mis en cache dans Redis pour une diffusion rapide en périphérie.
  3. Systèmes de traitement par lots : Réutiliser les résultats de conversion sur plusieurs exécutions de lots, économisant des cycles CPU.

Considérations de performance

Optimisation de l’utilisation du cache Redis

  • Gestion de la mémoire : Définissez maxmemory et les politiques d’éviction appropriées (par ex., volatile-lru).
  • Politiques d’éviction : Choisissez LRU, LFU ou une expiration basée sur TTL selon les modèles d’utilisation.
  • Surcharge de sérialisation : L’exemple utilise la sérialisation Java ; pour des charges utiles plus légères, envisagez protobuf ou JSON.

Gestion de la mémoire Java avec GroupDocs.Conversion

Manipulez les gros fichiers en diffusant les résultats (ByteArrayOutputStream) et en libérant rapidement les ressources. L’implémentation AutoCloseable de RedisCache garantit que la connexion Redis est correctement libérée.

Problèmes courants et dépannage

SymptomLikely CauseFix
ConnectionMultiplexer.Connect throws timeoutRedis not reachable or wrong host/portVerify Redis server is running and reachable (redis-cli ping).
TryGetValue always returns falseMismatch between stored and retrieved serialization formatEnsure the same serializer is used for both Set and TryGetValue.
Out‑of‑memory errors on large PDFsStoring huge byte arrays in Redis without limitsEnable maxmemory and set an appropriate eviction policy.

Questions fréquemment posées

Q : Puis‑je utiliser cette approche avec un cluster Redis distant ?
R : Oui. Remplacez "localhost" par le point de terminaison du cluster et configurez ConnectionMultiplexer pour l’authentification SSL et mot de passe.

Q : Comment modifier le redis cache key prefix ?
R : Modifiez le champ _cacheKeyPrefix dans RedisCache. Utiliser un préfixe unique aide à éviter les collisions de clés entre les applications.

Q : Existe‑t‑il un moyen de vider le cache programmétiquement ?
R : Appelez _db.KeyDelete(pattern) ou utilisez GetKeys pour récupérer les clés correspondantes et les supprimer dans une boucle.

Q : Cette méthode fonctionne‑t‑elle pour convertir des documents autres que PDF ?
R : Absolument. Remplacez PdfConvertOptions par la sous‑classe ConvertOptions appropriée (par ex., DocxConvertOptions).

Q : Quelle version de GroupDocs.Conversion est requise ?
R : Le tutoriel a été testé avec GroupDocs.Conversion 25.2 ; les versions plus récentes devraient être compatibles.

Conclusion

En maîtrisant comment utiliser Redis avec GroupDocs.Conversion, vous avez construit une couche de cache robuste qui réduit drastiquement le temps de conversion, diminue la charge serveur et améliore l’expérience utilisateur. Continuez à expérimenter avec différents préfixes de clé du cache Redis, politiques d’éviction et formats de sérialisation pour affiner les performances selon votre charge de travail spécifique.

Prochaines étapes

  • Essayez différentes stratégies d’éviction (LRU, TTL).
  • Profilez l’utilisation de la mémoire avec de gros lots de documents.
  • Explorez les fonctionnalités avancées de GroupDocs telles que le filigrane ou la conversion multi‑pages.

Dernière mise à jour : 2026-07-24
Testé avec : GroupDocs.Conversion 25.2
Auteur : GroupDocs

Tutoriels associés