Вопрос проверяет понимание влияния различных стратегий кэширования на консистентность данных в распределенных системах.
Кэширование ускоряет чтение данных, но создает риск рассинхронизации с источником. Разные стратегии по-разному балансируют между производительностью и консистентностью.
async function getUser(id) {
let user = await cache.get(`user:${id}`);
if (!user) {
user = await db.findUser(id);
await cache.set(`user:${id}`, user, 3600); // TTL 1 час
}
return user;
}
// Инвалидация при обновлении
async function updateUser(id, data) {
await db.updateUser(id, data);
await cache.del(`user:${id}`);
}Выбор стратегии зависит от сценария: для критичных данных (финансы) используйте write-through, для высокой производительности (лента новостей) — write-behind с допустимой потерей, для гибкости — cache-aside с TTL и инвалидацией.