green-red-cache
v1.1.0
Published
Cache control function implemented for nodejs.
Downloads
3
Readme
Green/Red Cache
Caches a return of an async function for "green" and "red" periods.
- Cache miss: calls the async function, then caches and returns the promise.
- Green period: returns a cached promise of the async function or its resolved value.
- Red period: same as during the green period, plus initiates a separate thread to update the cache.
Construct the cache
const CacheControl = require('green-red-cache')
const cache = new CacheControl(async (key) => {
return await retrieveValueFromBackend(key)
}, options)
options
Type: object
Optional: true
Optional cache initialization parameters.
green_period
Type: number
Optional: true
Default: 15000
How many milliseconds a value in the cache to be considered green.
red_period
Type: number
Optional: true
Default: 15000
How many milliseconds a value in the cache to be considered red.
timeout
Type: number
Optional: true
Default: undefined
How many milliseconds the async function has to complete before timeout exception raised.
Getting value
const value = await cache.get('my_key')
Try getting value without await
const value = cache.getgreen('my_key') || (await cache.get('my_key'))
Invalidate a cache entry
cache.clear('my_key')
Force an update of a cache entry
cache.update('my_key')
Remove garbage from the cache
setInterval(() => {
for (const key of caches.garbage()) cache.clear(key)
}, 3600000)
Keep cache hot
setInterval(() => {
for (const key of caches.passing()) cache.get(key)
}, 60000)
Handle parallel cache update errors
cache.on('fail', (key, error) => {
console.log(`Failed to retrieve value of the ${key}`)
console.log(error)
})