keyv-cache
v4.1.0
Published
~1kb key/value store wrapper for the browser cache-api, with zero-dependency
Downloads
66
Maintainers
Readme
Keyv-cache 🚀
A tiny key/value
wrapper for the browser Cache API with zero dependencies. It provides a simple key-value interface with Time to Live (TTL) support.
Key Features
- ✅ Less than 1kB - lightweight with zero dependencies
- 🚀 Super easy to use - intuitive API
- 🔒 Namespacing - isolate caches by namespace for your app
- 📦 Flexible values - cache any serializable value
Installation
npm install keyv-cache
📖 Usage
import KeyvCache from "keyv-cache";
const cache = KeyvCache({ namespace: "my-app" });
// within an async function
const ONE_HOUR = 60 * 60 * 1000;
await cache.set("foo", "bar", ONE_HOUR);
// somewhere/sometime later
const value = await cache.get("foo");
API
To create a new KeyvCache instance:
KeyvCache(options);
options: { namespace: string }
An object that can contain the following options:
- namespace: The namespace for isolating caches
cache methods
The object returned for a namespace has the following methods:
set(key: string, value: any, ttl: number) => Promise<void>
- Set a key-value pair with a TTL in ms
- value: any serializable primitive or object.
get(key: string) => Promise<any>
- Get the value for a key; Returns
null
if the key does not exist, or is expired.
- Get the value for a key; Returns
has(key: string) => Promise<boolean>
- Check if a key exists.
remove(key: string) => Promise<void>
- Remove a key from the cache.
removePattern(pattern: string) => Promise<void>
- Removes all keys from a cache namespace matching the pattern. Support for regex patterns is coming soon.
keys() => Promise<string[]>
- Returns an array of all keys in a cache namespace.
clear() => Promise<void>
- Removes all keys from a cache namespace.
⚡ Performance
Keyv-cache uses the built-in and super fast Browser Cache API under the hood. This makes it ideal for caching data on the client-side without sacrificing performance. The fallback memory cache is also very fast for environments where the Browser Cache API is not supported.
🏆 Contributing
We welcome contributions big and small! Please feel welcomed to send a PR or open an issue.
MIT © Chukwuma Nwaugha