@satyajit_me/cache-manager
v1.0.1
Published
In-memory caching with TTL support, LRU eviction, and statistics
Maintainers
Readme
Cache Manager
In-memory caching with TTL support, LRU eviction, and statistics.
Installation
npm install cache-managerQuick Start
import { Cache, LRUCache, memoize } from 'cache-manager';
const cache = new Cache({ maxSize: 100, defaultTTL: 60000 });
cache.set('user:123', userData);
cache.get('user:123');API
Cache
const cache = new Cache({
maxSize: 1000, // Max entries (Infinity)
defaultTTL: 60000, // Default TTL in ms (0 = no expiry)
checkInterval: 60000 // Cleanup interval
});
cache.set('key', value) // Set value
cache.set('key', value, 5000) // Set with custom TTL
cache.get('key') // Get value
cache.has('key') // Check existence
cache.delete('key') // Delete entry
cache.clear() // Clear all
cache.size() // Get count
cache.keys() // Get all keys
cache.values() // Get all values
cache.ttl('key') // Get remaining TTL
// Async get-or-set
const value = await cache.getOrSet('key', async () => {
return await fetchData();
}, 5000);
// Statistics
cache.getStats() // { hits, misses, sets, deletes, size, hitRate }
cache.resetStats()LRUCache
Least Recently Used cache with automatic eviction:
const cache = new LRUCache(100); // Max 100 entries
cache.set('key', value)
cache.get('key') // Moves to most recentmemoize()
Cache function results:
const expensive = memoize((x, y) => {
// expensive computation
return x + y;
}, { maxSize: 100, defaultTTL: 60000 });
expensive(1, 2); // Computes
expensive(1, 2); // Returns cached
expensive.clear(); // Clear memo cacheNamespaced Cache
const userCache = createNamespacedCache('users', { defaultTTL: 60000 });
userCache.set('123', userData); // Stored as 'users:123'
userCache.get('123');
userCache.clear(); // Only clears 'users:*'License
MIT
