api-cache-kit
v1.0.1
Published
A lightweight caching utility for Node.js and Express applications with memory cache, Redis support, TTL, and cache invalidation.
Downloads
265
Maintainers
Readme
api-cache-kit
A lightweight caching utility for Node.js and Express applications with memory cache, Redis support, TTL, and cache invalidation.
Installation
npm install api-cache-kitBasic Usage
import cache from "api-cache-kit";
const users = await cache("users", () => fetchUsers(), {
ttl: 60, // seconds
});Features
Memory Cache
const data = await cache("key", () => expensiveOp(), { ttl: 300 });Cache Invalidation
cache.invalidate("users"); // remove single key
cache.invalidatePattern("users:*"); // remove by pattern
cache.flush(); // clear everythingStale-While-Revalidate
Return stale data immediately while refreshing in the background:
const data = await cache("key", fetchData, {
ttl: 60,
staleWhileRevalidate: true,
});Redis Support
import { createClient } from "redis";
const redis = createClient();
const data = await cache("key", fetchData, {
ttl: 300,
redis,
});Express Middleware
Automatically cache API responses:
import express from "express";
import cache from "api-cache-kit";
const app = express();
app.get("/users", cache.middleware("users", { ttl: 60 }), (req, res) => {
res.json([{ id: 1, name: "Alice" }]);
});Params-Based Caching
Cache different query parameter combinations separately:
const data = await cache("search", () => api.search(q), {
ttl: 60,
params: { q },
});Logging
const data = await cache("key", fetchData, {
ttl: 60,
log: true,
});
// HIT key
// MISS key
// SWR key (stale)API
cache(key, callback, options?)
| Param | Type | Default | Description |
| -------- | -------- | ------- | ------------------------------ |
| key | string | required | Cache key |
| callback | function | required | Async function to fetch data |
| options | object | {} | See below |
Options
| Option | Type | Default | Description |
| ------------------- | ------- | ------- | ---------------------------------------- |
| ttl | number | 300 | Time-to-live in seconds |
| redis | object | null | Redis client for external cache |
| staleWhileRevalidate| boolean | false | Return stale, refresh in background |
| log | boolean | false | Log cache hits/misses to console |
| params | object | null | Query params to differentiate cache keys |
cache.invalidate(key, params?)
Remove a specific entry from the cache.
cache.invalidatePattern(pattern)
Remove all entries matching a regex or string pattern.
cache.flush()
Clear the entire memory cache.
cache.stats()
Return cache stats: { size, keys }.
cache.middleware(key, options?)
Express middleware for automatic response caching.
Test
node test.jsLicense
MIT
