Вопрос проверяет понимание стратегий инвалидации кэша, необходимых для поддержания актуальности данных в распределенных системах.
Инвалидация кэша — это механизм, который гарантирует, что данные в кэше остаются актуальными и соответствуют источнику истины (например, базе данных). Без неё пользователи могут получать устаревшую информацию, что критично для финансовых систем, каталогов товаров или любых приложений с частыми обновлениями.
const redis = require('redis');
const client = redis.createClient();
async function getUser(id) {
const cached = await client.get(`user:${id}`);
if (cached) return JSON.parse(cached);
const user = await db.findUser(id); // запрос в БД
await client.setEx(`user:${id}`, 3600, JSON.stringify(user)); // TTL 1 час
return user;
}
async function updateUser(id, data) {
await db.updateUser(id, data);
await client.del(`user:${id}`); // принудительная инвалидация
}Выбор стратегии зависит от компромисса между согласованностью данных и производительностью. TTL подходит для редко изменяемых данных, write-through — для критичных к актуальности, write-behind — для высоконагруженных систем, cache-aside — для гибкого управления. Инвалидация кэша — обязательный элемент архитектуры, предотвращающий устаревание данных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию