Кэширование в TypeScript: библиотека node-cache

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое node-cache и зачем она нужна?

Библиотека node-cache — это простая и быстрая система кэширования для Node.js, написанная на TypeScript. Она позволяет хранить данные в памяти (in-memory cache), что значительно ускоряет доступ к часто запрашиваемой информации (например, результаты запросов к базе данных, API-ответы, вычисления). В TypeScript node-cache предоставляет строгую типизацию, что делает код более предсказуемым и безопасным.

Кэширование необходимо для снижения нагрузки на сервер, уменьшения времени отклика и экономии ресурсов при повторяющихся операциях. Node-cache идеально подходит для небольших и средних проектов, где не требуется распределенное кэширование (как Redis), но нужен легковесный in-memory кэш.

Установка

Установите пакет через npm или yarn:

npm install node-cache
# или
yarn add node-cache

Для TypeScript типы уже включены в пакет, дополнительно устанавливать @types не нужно.

Основные функции

  • set(key, value, ttl) — сохраняет значение по ключу с опциональным временем жизни (TTL) в секундах.
  • get(key) — получает значение по ключу. Возвращает undefined, если ключ отсутствует или истек.
  • del(key) — удаляет один или несколько ключей.
  • has(key) — проверяет наличие ключа в кэше.
  • flushAll() — очищает весь кэш.
  • getStats() — возвращает статистику (количество ключей, попаданий, промахов).

Пример кода на TypeScript

import NodeCache from 'node-cache';

// Создаем экземпляр кэша с TTL по умолчанию 60 секунд
const myCache = new NodeCache({ stdTTL: 60 });

// Типизированное значение
interface User {
id: number;
name: string;
}

// Сохраняем данные
const user: User = { id: 1, name: 'Alice' };
myCache.set('user_1', user);

// Получаем данные
const cachedUser = myCache.get<User>('user_1');
if (cachedUser) {
console.log(cachedUser.name); // Alice
} else {
console.log('Кэш пуст');
}

// Проверка наличия
console.log(myCache.has('user_1')); // true

// Удаление
myCache.del('user_1');

// Очистка всего кэша
myCache.flushAll();

Когда использовать node-cache

  • Часто запрашиваемые данные: например, список стран, курсы валют, конфигурации.
  • Результаты тяжелых вычислений: кэширование результата дорогой операции на несколько секунд.
  • API-шлюзы: кэширование ответов внешних API для снижения задержек и лимитов.
  • Сессии: временное хранение данных сессии (если не требуется персистентность).

Избегайте node-cache, если вам нужно распределенное кэширование между несколькими серверами — в этом случае лучше использовать Redis. Также не подходит для больших объемов данных (более 1-2 ГБ), так как хранится в оперативной памяти.

Node-cache — отличный выбор для простых сценариев кэширования в TypeScript, где важна скорость и минимальная конфигурация.

Рекомендаций