Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: local cache, distributed cache, scalability, consistency

Когда использовать локальный кэш, а когда распределённый?

Проверяет понимание границ применения разных уровней кэширования.

Короткий ответ

Локальный кэш (in-process) подходит для часто читаемых данных в пределах одного экземпляра приложения и минимальных задержек. Он не затрагивает сетевые вызовы, но не разделяется между инстансами. Распределённый кэш (Redis, Memcached) нужен, когда несколько приложений или контейнеров должны иметь единое кэш-пространство, и требуется согласованность и масштабируемость.

Длинный ответ

Локальный кэш:

  • Располагается внутри JVM/процесса.

  • Мгновенный доступ, минимум накладных расходов.

  • Не подходит для горизонтально масштабируемых кластеров.

Распределённый кэш:

  • Общая точка хранения, доступная всем экземплярам.

  • Позволяет разделять состояние между сервисами.

  • Сетевые задержки, необходимость управления отказами кэша.

Критерии выбора:

  • Число инстансов: один — локальный, много — распределённый.

  • Объём данных: локальный ограничен памятью JVM.

  • Требуется консистентность: если важно, чтобы все узлы видели одни и те же данные.

Комбинирование:

  • Гибридная схема: локальный L1-кеш + Redis как L2-кеш.

  • Быстрый доступ в L1, глобальное обновление через L2+инвалидацию L1.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Java

    Java

Ключевые слова

#local cache

#distributed cache

#scalability

#consistency

Подпишись на Java Developer в телеграм