Skip to main content

stacks-cache

Use when implementing caching in Stacks - memory cache, Redis cache, cache-aside pattern (getOrSet), TTL management, cache stats, or cache configuration. Covers @stacksjs/cache and config/cache.ts.

소스 정보

저장소
stacksjs/stacks
최근 소스 활동
2026년 8월 29일 17:05
감지된 SKILL.md 언어
영어
스타
629
포크
19

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
stacks-cache
description
Use when implementing caching in Stacks - memory cache, Redis cache, cache-aside pattern (getOrSet), TTL management, cache stats, or cache configuration. Covers @stacksjs/cache and config/cache.ts.
license
MIT
compatibility
Bun >= 1.3.0, TypeScript
allowed-tools
Read Edit Write Bash Grep Glob
# Stacks Cache ## Key Paths - Core package: `storage/framework/core/cache/src/` - Configuration: `config/cache.ts` - Cache storage: `storage/framework/cache/` ## Cache API (StacksCache) ```typescript import { cache, memory } from '@stacksjs/cache' // Get/Set await cache.get<string>('key') // T | undefined await cache.set('key', 'value', 3600) // TTL in seconds await cache.setForever('key', 'value') // no expiry await cache.mget<string>(['key1', 'key2']) // T[] await cache.mset([{ key: 'k1', value: 'v1', ttl: 60 }, ...]) // Cache-aside pattern const value = await cache.getOrSet('expensive-key', async () => { return await computeExpensiveValue() }, 3600) // Delete await cache.del('key') await cache.del(['key1', 'key2']) await cache.deleteMany(['key1', 'key2']) await cache.remove('key') // Existence await cache.has('key') // boolean await cache.missing('key') // boolean // Take (get and delete) const value = await cache.take<string>('key') // TTL management await cache.getTtl('key') // remaining TTL await cache.ttl('key', 7200) // update TTL // Clear await cache.clear() await cache.flush() // Stats const stats = await cache.getStats() // { hits, misses, keys, size, hitRate } // Keys const keys = await cache.keys('user:*') // pattern matching // Cleanup await cache.close() await cache.disconnect() ``` ## Factory Functions ```typescript import { createMemoryCache, createRedisCache, createCache } from '@stacksjs/cache' const memCache = createMemoryCache({ stdTTL: 3600, // default TTL (seconds) checkPeriod: 120, // eviction check interval maxKeys: -1, // -1 = unlimited useClones: true, // clone on get/set prefix: 'app:' // key prefix }) const redisCache = createRedisCache({ url: 'redis://localhost:6379', // or individual: host: 'localhost', port: 6379, username: undefined, password: undefined, database: 0, tls: false, stdTTL: 3600, prefix: 'app:' }) // Auto-detect from config const cache = createCache('memory') const cache = createCache('redis', { host: 'localhost' }) ``` ## config/cache.ts ```typescript { driver: 'memory', // 'memory' | 'redis' prefix: 'stacks', ttl: 3600, // 1 hour default maxKeys: -1, // unlimited useClones: true, drivers: { redis: { host: 'localhost', port: 6379 }, memory: {} } } ``` ## Default Instance - `cache` — default memory cache (pre-configured) - `memory` — alias for `cache` ## Gotchas - Default driver is `memory` — data lost on restart - Redis driver requires a running Redis server - `getOrSet()` is the cache-aside pattern — fetches only on miss - `useClones: true` means mutations to retrieved objects don't affect cache - `take()` atomically gets and deletes — useful for one-time tokens - Cache stats track hits, misses, and hit rate — useful for tuning - `keys()` supports glob patterns for key listing - Framework caches (auto-imports, discovered packages) are in `storage/framework/cache/` - Use `buddy clean` or `buddy fresh` to clear framework caches
GitHub에서 보기