L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

nestjs-caching

nestjs-caching

Implement multi-level caching, invalidation patterns, and stampede protection in NestJS. Use when adding Redis caching layers, configuring cache-manager interceptors, implementing stale-while-revalidate, or preventing cache stampedes in NestJS services.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: nestjs-caching description: Implement multi-level caching, invalidation patterns, and stampede protection in NestJS. Use when adding Redis caching layers, configuring cache-manager interceptors, implementing stale-while-revalidate, or preventing cache stampedes in NestJS services. metadata: triggers: files: - '/*.service.ts' - '/*.interceptor.ts' keywords: - CacheInterceptor - CacheTTL - Redis - stale-while-revalidate

Caching & Redis Standards

Priority: P1 (HIGH)

Caching Strategy

  • Layering: Use Multi-Level Caching for high-traffic read endpoints.
  • L1 (Local): In-Memory (Node.js heap). Ultra-fast, no network. Use lru-cache for config/static data.
  • L2 (Distributed): Redis. Shared across pods.
  • Pattern: Implement Stale-While-Revalidate to avoid latency spikes during cache misses.

NestJS Implementation

  • Library: Use cache-manager with cache-manager-redis-yet (recommended over cache-manager-redis-store for V4 stability).
  • Interceptors: Use @UseInterceptors(CacheInterceptor) for simple GET responses.
  • Warning: Default key URL. Ensure consistent query param ordering or use custom key generators.

See implementation examples

Stampede Protection

  • Jitter: Add random variance to TTLs to prevent simultaneous expiry across keys.
  • Locking: One process recomputes while others wait or return stale data.

See implementation examples

Redis Data Structures

  • Hash (HSET): Store objects (user profiles) with partial update support.
  • Set (SADD): Unique collections with O(1) membership checks.
  • Sorted Set (ZADD): Priority queues, leaderboards, rate-limiting windows.

Invalidation Patterns

  • Tagging: Use Sets to group cache keys (avoid KEYS which O(N) in production).
  • Create: SADD post:1:tags cache:post:1
  • Invalidate: Fetch tags from Set, then DEL grouped keys.
  • Event-Driven: Listen to domain events (UserUpdated) to trigger invalidation asynchronously.

Anti-Patterns

  • No KEYS in production: Use SET-based tag grouping for cache invalidation; KEYS O(N).
  • No fixed TTLs on grouped caches: Add jitter (±10s) to prevent simultaneous stampede.
  • No MemoryStorage for multi-pod: Use Redis store; in-memory cache not shared across pods.
Skills enregistrées