MetricsCacheService
Class: MetricsCacheService
Defined in: src/services/metrics/metricsCache.ts:21
Service for caching aggregated metrics data. Provides methods to cache and retrieve metrics snapshots with configurable TTL.
All cache operations are wrapped with try/catch for graceful degradation. Cache failures should not break metrics collection or request handling.
Constructors
Constructor
new MetricsCacheService(
cache,logger?,defaultTtlSeconds?):MetricsCacheService
Defined in: src/services/metrics/metricsCache.ts:22
Parameters
cache
logger?
Logger
defaultTtlSeconds?
number = 300
Returns
MetricsCacheService
Methods
cacheAggregatedMetrics()
cacheAggregatedMetrics(
metrics,timestamp,ttlSeconds?):Promise<void>
Defined in: src/services/metrics/metricsCache.ts:41
Cache aggregated metrics with a timestamp identifier.
Parameters
metrics
The aggregated metrics to cache
timestamp
string
Timestamp identifier (milliseconds since epoch as string)
ttlSeconds?
number
Optional TTL override (defaults to configured default)
Returns
Promise<void>
Promise that resolves when caching is complete (or fails silently)
Example
await metricsCache.cacheAggregatedMetrics(metrics, "1705320000000", 600);
cacheWindowedMetrics()
cacheWindowedMetrics(
metrics,windowType,date,ttlSeconds?):Promise<void>
Defined in: src/services/metrics/metricsCache.ts:214
Cache aggregated metrics for a time window (hourly or daily).
Parameters
metrics
The aggregated metrics to cache
windowType
Type of time window ('hourly' or 'daily')
"hourly" | "daily"
date
string
Date string in format 'YYYY-MM-DD' for daily or 'YYYY-MM-DD-HH' for hourly
ttlSeconds?
number
Optional TTL override (defaults to longer TTL for windowed metrics)
Returns
Promise<void>
Promise that resolves when caching is complete (or fails silently)
Example
// Cache hourly metrics with default TTL (3600 seconds)
await metricsCache.cacheWindowedMetrics(metrics, 'hourly', '2024-01-15-14');
// Cache daily metrics with custom TTL
await metricsCache.cacheWindowedMetrics(metrics, 'daily', '2024-01-15', 86400);
getCachedMetrics()
getCachedMetrics(
timestamp):Promise<AggregatedMetrics|null>
Defined in: src/services/metrics/metricsCache.ts:113
Retrieve cached aggregated metrics by timestamp.
Parameters
timestamp
string
Timestamp identifier (milliseconds since epoch as string)
Returns
Promise<AggregatedMetrics | null>
Cached metrics or null if not found/expired
Example
const metrics = await metricsCache.getCachedMetrics("1705320000000");
if (metrics) {
// Use cached metrics
}
getCachedMetricsByWindow()
getCachedMetricsByWindow(
windowType,date):Promise<AggregatedMetrics|null>
Defined in: src/services/metrics/metricsCache.ts:160
Retrieve cached aggregated metrics by time window (hourly or daily).
Parameters
windowType
Type of time window ('hourly' or 'daily')
"hourly" | "daily"
date
string
Date string in format 'YYYY-MM-DD' for daily or 'YYYY-MM-DD-HH' for hourly
Returns
Promise<AggregatedMetrics | null>
Cached metrics or null if not found/expired
Example
// Get hourly metrics for 2024-01-15 at 14:00
const metrics = await metricsCache.getCachedMetricsByWindow('hourly', '2024-01-15-14');
// Get daily metrics for 2024-01-15
const metrics = await metricsCache.getCachedMetricsByWindow('daily', '2024-01-15');
invalidateMetricsCache()
invalidateMetricsCache(
pattern?):Promise<void>
Defined in: src/services/metrics/metricsCache.ts:293
Invalidate metrics cache entries matching a pattern.
Parameters
pattern?
string
Optional glob pattern (e.g., "metrics:aggregated:" or "metrics:aggregated:hourly:") If not provided, invalidates all metrics cache entries
Returns
Promise<void>
Promise that resolves when invalidation is complete (or fails silently)
Example
// Invalidate all metrics
await metricsCache.invalidateMetricsCache();
// Invalidate only hourly metrics
await metricsCache.invalidateMetricsCache("aggregated:hourly:*");