refactor(core): unified memory cache (#9395)

Signed-off-by: Rongrong <15956627+Rongronggg9@users.noreply.github.com>
This commit is contained in:
Rongrong
2022-03-28 22:55:29 +08:00
committed by GitHub
parent cd151f45ab
commit 501dff59d0
5 changed files with 11 additions and 17 deletions

View File

@@ -27,10 +27,10 @@ if (config.cache.type === 'redis') {
globalCache.set = cacheModule.set;
} else if (config.cache.type === 'memory') {
cacheModule = require('./memory');
const { pageCache } = cacheModule.clients;
const { memoryCache } = cacheModule.clients;
globalCache.get = (key) => {
if (key && cacheModule.status.available) {
return pageCache.get(key);
return memoryCache.get(key, { updateAgeOnGet: false });
}
};
globalCache.set = (key, value, maxAge) => {
@@ -41,7 +41,7 @@ if (config.cache.type === 'redis') {
value = JSON.stringify(value);
}
if (key) {
return pageCache.set(key, value, { ttl: maxAge * 1000 });
return memoryCache.set(key, value, { ttl: maxAge * 1000 });
}
};
} else {

View File

@@ -3,30 +3,24 @@ const config = require('@/config').value;
const status = { available: false };
const pageCache = new Lru({
const memoryCache = new Lru({
ttl: config.cache.routeExpire * 1000,
max: config.memory.max,
});
const routeCache = new Lru({
ttl: config.cache.routeExpire * 1000,
max: config.memory.max,
updateAgeOnGet: true,
});
status.available = true;
module.exports = {
get: (key, refresh = true) => {
if (key && status.available) {
let value = (refresh ? routeCache : pageCache).get(key);
let value = memoryCache.get(key, { updateAgeOnGet: refresh });
if (value) {
value = value + '';
}
return value;
}
},
set: (key, value, maxAge = config.cache.contentExpire, refresh = true) => {
set: (key, value, maxAge = config.cache.contentExpire) => {
if (!value || value === 'undefined') {
value = '';
}
@@ -34,9 +28,9 @@ module.exports = {
value = JSON.stringify(value);
}
if (key && status.available) {
return (refresh ? routeCache : pageCache).set(key, value, { ttl: maxAge * 1000 });
return memoryCache.set(key, value, { ttl: maxAge * 1000 });
}
},
clients: { pageCache, routeCache },
clients: { memoryCache },
status,
};

View File

@@ -27,7 +27,7 @@ module.exports = async (ctx) => {
if (!data) {
const res = await got.get(url);
data = res.data;
ctx.cache.set(url, data, config.cache.contentExpire, false);
ctx.cache.set(url, data, config.cache.contentExpire);
}
const $ = cheerio.load(data, { xmlMode: true });

View File

@@ -130,7 +130,7 @@ module.exports = async (ctx) => {
const token = rep.data.access_token;
const uid = rep.data.uid;
const expires_in = rep.data.expires_in;
await ctx.cache.set('weibotimelineuid' + uid, token, expires_in, false);
await ctx.cache.set('weibotimelineuid' + uid, token, expires_in);
ctx.set({
'Content-Type': 'text/html; charset=UTF-8',

View File

@@ -62,7 +62,7 @@ module.exports = async (ctx) => {
}
if (!noRefresh) {
noRefresh = '0';
await ctx.cache.set('noRefreshCache', '1', undefined, false);
await ctx.cache.set('noRefreshCache', '1', undefined);
}
item.push({
title: 'Cache Title',