Перейти к содержанию

Настройка Redis и кэширования

Для повышения производительности и снижения нагрузки на платформу CodeScoring поддерживается кэширование результатов работы политик (вердиктов сервиса Judge). Для работы кэширования требуется подключение к Redis.

Настройки Redis и кэширования

spring:
  data:
    redis:
      host: localhost
      port: 6379
      database: 0         # Номер базы данных (опционально)
      password: password  # Опционально
      timeout: 2000ms

cache:
  judge:
    enabled: true  # Включение кэширования (по умолчанию false)
    ttl: 24h       # Время жизни записи в кэше
    refresh-after: 30m  # Время, после которого запись считается устаревшей и требует обновления (но все еще может быть отдана из кэша)
    proactive-refresh-enabled: true # Включение проактивного (фонового) обновления кэша
    proactive-refresh-interval: 2h  # Интервал запуска фонового обновления
    key-prefix: "cs:judge:" # Префикс для ключей в Redis

Особенности продления времени жизни (TTL) в кэше

Проактивное обновление не продлевает TTL (время жизни) записи в кэше. TTL продлевается только при чтении данных из кэша реальными запросами пользователей. Это позволяет автоматически удалять из Redis редко запрашиваемые пакеты и хранить только востребованные данные.

Swagger UI

OSA Proxy предоставляет Swagger UI для просмотра документации API и управления кэшем.

  • URL: http://<osa-proxy-host>:<port>/api/swagger
  • Доступные операции:
    • Очистка кэша по PURL
    • Очистка кэша по типу пакета