Вступить в клуб →
сложнаявопросКэш и Redis в Spring

С @Cacheable(sync = true) база всё равно получает шесть одинаковых тяжёлых запросов

Тяжёлый отчёт кэшируется на 5 минут в Redis. Чтобы при истечении записи не было лавины одинаковых пересчётов, добавили @Cacheable(value = "report", sync = true). Сервис работает в шести репликах. При истечении записи в базе видно ровно шесть одновременных тяжёлых запросов.

Почему sync не помог полностью?

  • sync блокирует пересчёт только внутри одной JVM, а реплик шесть
  • sync работает только для локальных кэшей и игнорируется для Redis
  • sync = true не действует без @Transactional на методе
  • Шесть запросов — это повторы, которые делает Redis при таймауте

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела