1.6 KiB
1.6 KiB
ADR-002: In-memory cache с путём миграции на Redis
Статус: Accepted
Дата: 2026-06-13
Участники решения: Architect, Tech Lead
Контекст
Для MVP требуется кеширование MOEX-данных, чтобы снизить нагрузку на внешнее API и обеспечить приемлемое время ответа. На начальном этапе нет требований к горизонтальному масштабированию, и хочется избежать внешних зависимостей.
Решение
Использовать @nestjs/cache-manager с MemoryStore. TTL настраивается per-endpoint через конфигурацию.
Архитектура позволяет переключиться на Redis заменой импорта провайдера:
// Текущая реализация
CacheModule.register({ store: 'memory', ttl: 900 })
// Миграция на Redis (меняется только registration)
CacheModule.registerAsync({
useFactory: () => ({
store: redisStore,
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
}),
})
Последствия
- Нет внешних зависимостей для MVP
- Кеш сбрасывается при рестарте сервера (приемлемо для read-only приложения)
- Чистый путь миграции на Redis
- Единый API для cache (cache-manager abstraction)