keshi v3.0.2
Keshi
Keshi is a tiny in-memory cache for Node and the browser that is especially suited to storing Promises (e.g. caching fetch requests).
import Keshi from 'keshi'
// or
const Keshi = require('keshi')const cache = new Keshi()
const user = await cache.resolve(
'user',
() => fetch('https://myapi.com/user').then(r => r.json()),
'5mins'
)What this will do:
- Fetch the user from the API as it doesn't have it in cache.
- If called again within 5 minutes it will return the cached user.
- If called after 5 minutes it will fetch the user again and re-cache.
Keshi automatically cleans up expired items.
cache.resolve<T>(key: string, getValue: () => T | Promise<T>, expiresIn?: number | string) => Promise<T>
function getCachedUser() {
return cache.resolve(
'user',
() => fetch('https://myapi.com/user').then(r => r.json()),
'5mins' // Anything 'ms' package accepts or milliseconds as a number. Omit for no expiry.
)
}
const user1 = await getCachedUser() // First time caches the promise and returns it
const user2 = await getCachedUser() // Second time returns the first promise if within 5minsYou can use plain values but they must still be awaited:
const plainValue = await cache.resolve('mynumber', () => 5, '10mins')
console.log(plainValue) // prints 5cache.delete(key: string, matchStart?: boolean)
Explicitly delete a cached object.
Note: expired objects are automatically cleanup up.
If true is passed for matchStart then any cache starting with the key will be deleted:
cache.del(`project.${projectId}.`, true) // Delete all caches under this projectIdcache.clear()
Clear the whole cache.
cache.teardown()
A stale cache cleanup interval is running in the background. If your cache doesn't last the lifetime of your application then you should call teardown.
10 months ago
10 months ago
10 months ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago