Пример задачи: У нас есть сайт по учёту павлинов всего мира. Он неожиданно для всех стал безумно популярным и мы хотим масштабироваться. Мы храним информацию о павлинах в PostgreSQL в таблице peacock: * Новые павлины рождаются примерно 1 раз в секунду.
* Различные запросы по этой таблице выполняются около 100 раз в секунду. Наш PostgreSQL спокойно выдерживает такую нагрузку. Но тут мы решили добавить на главную страницу сайта диаграмму распределения павлинов по зонам в стране пользователя в реальном времени. Главная страница открывается 2000 раз в секунду. Наш PostgreSQL уже почти не выдерживает выполнение такого запроса с такой частотой: select zone_id, count(*)
from peacock
where zone_id in (1,2,3)
group by zone_id; Поэтому мы решаем использовать кэширование Кэширование in-memory Попробуем сохранить результат запроса в память нашего веб-сервера. Для этого будем использовать Guava CacheBuilder. Это очень гибкая реализация кэша в памяти от google. Так будет выглядеть инициализация кэша