Create cache.ts
This commit is contained in:
commit
eb781109e1
|
@ -0,0 +1,62 @@
|
||||||
|
interface CacheDetail {
|
||||||
|
value: any;
|
||||||
|
expiresTimeStamp: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CacheMap {
|
||||||
|
[cacheKey: string]: CacheDetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认过期时间
|
||||||
|
*/
|
||||||
|
export const DEFAULT_EXPIRES = 5 * 60 * 1000;
|
||||||
|
|
||||||
|
let data: CacheMap = {};
|
||||||
|
|
||||||
|
export default class {
|
||||||
|
/**
|
||||||
|
* 插入指定名称数据
|
||||||
|
* @param {string} name
|
||||||
|
* @param {T} cache
|
||||||
|
* @param {number} expires 有效时间(毫秒时间戳)
|
||||||
|
*/
|
||||||
|
static set<T = any>(name: string, cache: T, expires: number = DEFAULT_EXPIRES) {
|
||||||
|
data[name] = {
|
||||||
|
value: cache,
|
||||||
|
expiresTimeStamp: Date.now() + expires,
|
||||||
|
};
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
static get<T = any>(name: string): T | null {
|
||||||
|
const detail = data[name];
|
||||||
|
if (!detail) return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (detail.expiresTimeStamp && detail.expiresTimeStamp > Date.now()) {
|
||||||
|
return detail.value || null;
|
||||||
|
}
|
||||||
|
} catch (err) {}
|
||||||
|
this.clear(name);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定名称数据
|
||||||
|
* @param {string} name
|
||||||
|
*/
|
||||||
|
static clear(name: string) {
|
||||||
|
delete data[name];
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除所有数据
|
||||||
|
*/
|
||||||
|
static clearAll() {
|
||||||
|
data = {};
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue