ice.fo.utils
Version:
34 lines (31 loc) • 786 B
JavaScript
const NodeCache = require('node-cache')
module.exports = function createServerCache ({ ttl = 60 * 5 /* 5 minutes */, ttlByKeys = {} }) {
const store = new NodeCache({
stdTTL: ttl, // seconds
})
const configurableKeyNames = Object.keys(ttlByKeys)
return {
put ({ key, value, seconds }) {
if (!seconds && seconds != 0) {
const keyName = configurableKeyNames.find(i => key.startsWith(i))
seconds = ttlByKeys[keyName]
}
store.set(key, value, seconds)
},
get ({ key }) {
return store.get(key)
},
remove ({ key }) {
return store.del(key)
},
removeAll () {
return store.flushAll()
},
has ({ key }) {
return store.has(key)
},
getKeys () {
return store.keys()
},
}
}