Вопрос проверяет понимание механизмов кэширования повторяющихся запросов с использованием Redis для снижения нагрузки на базу данных и ускорения ответов.
Redis — это высокопроизводительное хранилище данных в памяти, которое часто используется как кэш. Кэширование повторяющихся запросов позволяет сохранить результат выполнения запроса (например, к базе данных) по определённому ключу. При следующем таком же запросе данные возвращаются из Redis, минуя более медленный источник.
Основная идея — использовать уникальный ключ, который однозначно идентифицирует запрос. Обычно это строка, составленная из параметров запроса или его хэша. Значение — сериализованный результат. Для каждого ключа устанавливается TTL (Time To Live), после которого запись автоматически удаляется. Это решает проблему устаревания данных.
const redis = require('redis');
const client = redis.createClient();
async function getCachedData(queryKey) {
const cacheKey = `query:${queryKey}`;
const cached = await client.get(cacheKey);
if (cached) {
return JSON.parse(cached);
}
// Дорогой запрос к БД
const result = await expensiveDbQuery(queryKey);
// Сохраняем в кэш на 60 секунд
await client.setEx(cacheKey, 60, JSON.stringify(result));
return result;
}Кэширование в Redis — эффективный способ ускорить приложение и снизить нагрузку на базу данных. Особенно полезно для read-heavy систем с повторяющимися запросами. Важно правильно выбирать TTL и стратегию инвалидации кэша.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
Node.js
Redis
Ключевые слова
Подпишись на Golang Developer в телеграм