Skip to content

Caching Strategies ​

Since 1.5.0

Types for caching patterns and implementations.

Overview ​

Caching Strategies provides types for implementing various caching patterns including LRU, TTL, and distributed caches. It supports cache invalidation strategies, cache-aside patterns, and cache cluster configurations.

This module enables building high-performance caching layers with proper type safety. It includes types for different eviction policies, distributed caching with consistent hashing, and cache decorators for method-level caching.

Basic Usage ​

typescript
import type { Cache, LRUCache, TTLCache, CacheInvalidation, DistributedCache } from 'uni-types'

// Basic cache
type UserCache = Cache<User>

// LRU cache with max size
type SessionCache = LRUCache<Session>

// TTL cache with expiration
type ApiCache = TTLCache<ApiResponse>

Key Types ​

Cache ​

Base cache interface with common operations.

typescript
type Cache<T = unknown> = {
  get: (key: string) => Promise<T | undefined>
  set: (key: string, value: T, options?: CacheOptions) => Promise<void>
  has: (key: string) => Promise<boolean>
  delete: (key: string) => Promise<boolean>
  clear: () => Promise<void>
  keys: () => Promise<string[]>
}

LRUCache ​

Least Recently Used cache with eviction.

typescript
type LRUCache<T = unknown> = Cache<T> & {
  readonly maxSize: number
  readonly currentSize: number
  peek: (key: string) => T | undefined
  dump: () => CacheEntry<T>[]
  restore: (entries: CacheEntry<T>[]) => void
  prune: () => void
}

TTLCache ​

Time-To-Live cache with expiration.

typescript
type TTLCache<T = unknown> = Cache<T> & {
  readonly defaultTTL: number
  getRemainingTTL: (key: string) => number
  refresh: (key: string) => boolean
}

CacheInvalidation ​

Cache invalidation strategies.

typescript
type CacheInvalidation<T = unknown> = {
  invalidate: (key: string) => Promise<void>
  invalidateByTag: (tag: string) => Promise<void>
  invalidateByPattern: (pattern: string | RegExp) => Promise<void>
  invalidateAll: () => Promise<void>
}

DistributedCache ​

Distributed cache with replication.

typescript
type DistributedCache<T = unknown> = Cache<T> & {
  nodes: CacheNode[]
  consistentHash: ConsistentHash
  replicate: (key: string, value: T) => Promise<void>
  failover: (failedNode: string) => Promise<void>
  sync: () => Promise<void>
}

Released under the MIT License.