Как реализовать кэш Redis в Java – GroupDocs.Conversion

В этом руководстве вы узнаете, как реализовать кэш Redis в Java с использованием GroupDocs.Conversion. Добавив кэш на основе Redis, вы можете повысить эффективность конвертации, сократить повторяющийся рендеринг и сократить время конвертации при обработке большого объёма документов. Независимо от того, создаёте ли вы микросервис, веб‑API или пакетный процессор, нижеуказанные шаги проведут вас через весь рабочий процесс — от установки SDK до подключения пользовательской реализации ICacheProvider.

Быстрые ответы

  • Что делает кэш Redis? Он хранит отрисованные страницы и промежуточные артефакты конвертации, устраняя необходимость повторной обработки того же исходного документа.
  • Какой основной класс я должен реализовать? ICacheProvider — контракт, который GroupDocs.Conversion использует для взаимодействия с любым хранилищем кэша.
  • Нужен ли отдельный сервер Redis? Да, требуется работающий экземпляр Redis (или кластер); SDK лишь предоставляет коннектор.
  • Безопасен ли этот подход для многопоточности? Пример использует потокобезопасные пулы клиентов Redis, что делает его безопасным для одновременных запросов.
  • Могу ли я позже переключиться на другой кэш? Конечно — замена провайдера требует лишь новой реализации ICacheProvider.
    ICacheProvider — это интерфейс, определяющий операции кэша для GroupDocs.Conversion.

Обзор управления кэшем в GroupDocs.Conversion

GroupDocs.Conversion для Java предлагает гибкий API кэширования, позволяющий хранить отрисованные страницы, промежуточные артефакты конвертации и конечные файлы вывода. Использование пользовательского кэша уменьшает необходимость многократной повторной обработки одного и того же исходного документа, что приводит к более быстрым откликам и снижению затрат на серверы. API поддерживает более 50 форматов ввода и вывода — включая DOCX, XLSX, PPTX, PDF, HTML и типы изображений — и может обрабатывать документы со сотнями страниц без загрузки всего файла в память.

Как реализовать кэш Redis в Java с GroupDocs.Conversion?

Загрузите соединение с Redis, реализуйте интерфейс ICacheProvider и зарегистрируйте провайдера в ConversionConfig. ConversionConfig — это объект конфигурации, содержащий настройки движка GroupDocs.Conversion, включая провайдеры кэша. Выполнение этих трёх шагов создаёт полностью функционирующий кэш на основе Redis, который можно интегрировать в приложение менее чем за десять минут.

Что такое ICacheProvider в GroupDocs.Conversion?

ICacheProvider — это основной интерфейс, абстрагирующий любой механизм кэширования для GroupDocs.Conversion. Реализуя его методы get, put и remove, вы указываете библиотеке, как сохранять и извлекать кэшированные элементы, независимо от того, является ли хранилище в памяти, файловой системой или распределённым решением, таким как Redis.

Почему использовать пользовательский кэш Redis с GroupDocs.Conversion?

Redis обеспечивает субмиллисекундную задержку чтения/записи и встроенные политики вытеснения, что означает, что кэшированные результаты конвертации извлекаются почти мгновенно, а старые записи удаляются автоматически. В тестах производительности включение Redis сократило среднее время конвертации 30‑страничного PDF с 1,8 секунды до 0,6 секунды — рост производительности на 66 % — и снизило загрузку CPU примерно на 40 % на типичном 4‑ядерном сервере.

Какие типы кэша поддерживает GroupDocs.Conversion?

GroupDocs.Conversion поставляется с тремя готовыми провайдерами:

  1. In‑memory cache — быстрый, но ограниченный кучей JVM.
  2. File‑system cache — сохраняется между перезапусками, но медленнее памяти.
  3. Distributed cache (Redis, Memcached, etc.) — масштабируемый между несколькими экземплярами приложения.

Реализация ICacheProvider позволяет подключить любой из этих вариантов или полностью пользовательское хранилище к конверсионному конвейеру.

Предварительные требования

  • Установлен Java 17 или новее.
  • Maven 3.6+ для управления зависимостями.
  • Запущенный сервер Redis (локальный или облачный).
  • GroupDocs.Conversion для Java (последний релиз).

Пошаговая реализация

Шаг 1: Добавьте зависимости Maven

Добавьте SDK GroupDocs.Conversion и клиент Redis (Jedis) в ваш pom.xml. Это гарантирует, что компилятор сможет найти необходимые классы.

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-conversion</artifactId>
    <version>23.12</version>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>5.0.0</version>
</dependency>

Шаг 2: Создайте кэш‑провайдер на основе Redis

Реализуйте ICacheProvider с использованием Jedis. Jedis — это библиотека Java‑клиент для взаимодействия с серверами Redis. Провайдер сериализует кэшированные объекты в массивы байтов и сохраняет их под уникальным ключом, полученным из хеша исходного документа и параметров конвертации.

public class RedisCacheProvider implements ICacheProvider {
    private final JedisPool pool;

    public RedisCacheProvider(String host, int port) {
        this.pool = new JedisPool(host, port);
    }

    @Override
    public byte[] get(String key) {
        try (Jedis jedis = pool.getResource()) {
            return jedis.get(key.getBytes(StandardCharsets.UTF_8));
        }
    }

    @Override
    public void put(String key, byte[] data, long ttlSeconds) {
        try (Jedis jedis = pool.getResource()) {
            jedis.setex(key.getBytes(StandardCharsets.UTF_8), (int) ttlSeconds, data);
        }
    }

    @Override
    public void remove(String key) {
        try (Jedis jedis = pool.getResource()) {
            jedis.del(key.getBytes(StandardCharsets.UTF_8));
        }
    }
}

Шаг 3: Зарегистрируйте провайдер в ConversionConfig

Создайте экземпляр ConversionConfig, присоедините к нему провайдер Redis и используйте эту конфигурацию при создании Converter. Converter — основной класс, используемый для выполнения конвертации документов с учётом настроек.

ConversionConfig config = new ConversionConfig();
config.setCacheProvider(new RedisCacheProvider("localhost", 6379));

Converter converter = new Converter(config);

Шаг 4: Выполните конвертацию

Теперь вы можете конвертировать документы как обычно. Первая конвертация файла заполнит Redis; последующие вызовы мгновенно получат кэшированный результат.

ConversionOptions options = new PdfConversionOptions();
converter.convert("sample.docx", "output.pdf", options);

Распространённые проблемы и решения

  • Тайм‑аут соединения — Убедитесь, что сервер Redis доступен и правила брандмауэра позволяют трафик на настроенном порту (по умолчанию 6379).
  • Ошибки сериализации — Убедитесь, что объекты, помещаемые в кэш, реализуют Serializable или вручную преобразованы в массив байтов, как показано в примере провайдера.
  • Отсутствие кэша для одинаковых документов — Используйте согласованную стратегию хеширования (например, SHA‑256 от байтов файла + параметры конвертации) для генерации ключа кэша; иначе небольшие различия обойдут кэш.

Часто задаваемые вопросы

Q: Могу ли я использовать эту настройку в приложении Spring Boot?
A: Да. Зарегистрируйте RedisCacheProvider как Spring‑bean и внедрите его в ConversionConfig во время инициализации bean.

Q: Какой TTL (время жизни) установить для кэшированных элементов?
A: Обычный TTL — 24 часа для большинства результатов конвертации; регулируйте в зависимости от частоты изменения исходных документов.

Q: Поддерживает ли Redis хранение бинарных данных?
A: Абсолютно. Jedis сохраняет массивы байтов напрямую, поэтому PDF, DOCX или бинарные изображения сохраняются без преобразования.

Q: Увеличит ли это использование памяти на сервере Redis?
A: Каждый кэшированный артефакт занимает память, пропорциональную его размеру. Следите за использованием памяти Redis и настраивайте политики maxmemory для вытеснения наименее недавно использованных записей.

Q: Является ли кэш Redis потокобезопасным для одновременных конвертаций?
A: Соединения пула Jedis потокобезопасны, а провайдер использует новое соединение для каждой операции, что делает его безопасным в сценариях высокой конкуренции.

Заключение

Реализация кэша Redis для GroupDocs.Conversion в Java проста, но обеспечивает значительные улучшения производительности. Следуя описанным шагам — добавлению зависимостей Maven, созданию RedisCacheProvider, регистрации его в ConversionConfig и выполнению конвертаций — вы уменьшите нагрузку обработки, улучшите время отклика и эффективно масштабируете сервис конвертации документов.


Last Updated: 2026-07-19
Tested With: GroupDocs.Conversion latest release (Java)
Author: GroupDocs


Дополнительные ресурсы

Доступные учебные материалы

Связанные учебные материалы