44 lines
811 B
JavaScript
44 lines
811 B
JavaScript
const NodeCache = require( "node-cache" );
|
|
//const myCache = new NodeCache();
|
|
class Cache {
|
|
|
|
constructor(ttlSeconds) {
|
|
this.cache = new NodeCache({ stdTTL: ttlSeconds, checkperiod: ttlSeconds * 0.2, useClones: false });
|
|
}
|
|
|
|
get(key, storeFunction) {
|
|
const value = this.cache.get(key);
|
|
if (value) {
|
|
return Promise.resolve(value);
|
|
}
|
|
|
|
return storeFunction().then((result) => {
|
|
this.cache.set(key, result);
|
|
return result;
|
|
});
|
|
}
|
|
|
|
del(keys) {
|
|
this.cache.del(keys);
|
|
}
|
|
|
|
delStartWith(startStr = '') {
|
|
if (!startStr) {
|
|
return;
|
|
}
|
|
|
|
const keys = this.cache.keys();
|
|
for (const key of keys) {
|
|
if (key.indexOf(startStr) === 0) {
|
|
this.del(key);
|
|
}
|
|
}
|
|
}
|
|
|
|
flush() {
|
|
this.cache.flushAll();
|
|
}
|
|
}
|
|
|
|
|
|
exports.Cache = Cache; |