//以下记录均为学习视频的笔记,方便自己记忆
//视频地址:https://time.geekbang.org/course/intro/232
app.js文件
const app = new (require('koa'))
const cacheRedis = require('redis')('cache')
const backupRedis = require('redis')('backup')
//koa的中间键符合一份洋葱模型
app.use(async(ctx,next) => {
const result = await cacheRedis(ctx.url); // RPC的异步调用,从redis中取出一份缓存好的文件内容
//将请求url作为key,从redis中取出一份结果出来,赋值给result
if(result){ //若有结果,直接将结果返回出去;即命中缓存
ctx.body = result;
return;
}
await next() //若没有命中缓存,则执行后面的中间键
if(ctx.status == 200){ //判断请求结果是正常的
cacheRedis.set(ctx.url,ctx.body, {expire: 200}); //将请求结果写入缓存,设置过期时间
backupRedis.set(ctx.url,ctx.body, {expire: 200}); //将请求结果写入备份缓存,设置过期时间
}
if(ctx.status != 200){
const result = await backupRedis(ctx.url); //从备份redis取出结果
ctx.status = 200;
ctx.body = result;
}
})