node.js 架构优化:反向代理与缓存服务

//以下记录均为学习视频的笔记,方便自己记忆

//视频地址: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;

      }

})

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值