体验一下nest.js利用缓存带来的方便

2022/2/14 23:22:57

本文主要是介绍体验一下nest.js利用缓存带来的方便,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目前es6出了两种新类型,分别是map与set:https://www.runoob.com/w3cnote/es6-map-set.html

今天在写一个项目时,就用到map类


@Injectable()
export class InterfaceService {
    constructor(@InjectRepository(InterfaceEntity) public readonly interfaceRepository : Repository<InterfaceEntity>){
         
    }
     //    加一级缓存
    interfaceMap = new Map()
  async get_interface(interfaceName){
        //判断请求是否有根据名字查询
       if(!interfaceName){
        let data = this.interfaceMap.has("all")?this.interfaceMap.get("all"):this.interfaceRepository.query("select * from interface")
        //刷新缓存
        if(!this.interfaceMap.has("all")){

            this.interfaceMap.set("all",this.interfaceRepository.query("select * from interface"))
        }
        return data
       }else{
            if(this.interfaceMap.has(interfaceName)){
                return this.interfaceMap.get(interfaceName)
            }else{
                
                let res = await this.interfaceRepository.find({"interface_name":interfaceName}).then(result=>{
                    return result
                })
                this.interfaceMap.set(interfaceName,res)
                console.log(res,"service")
                return  res
            }
       } 
    }

用了缓存之后,响应时间迅速减小,减少了对数据库的访问

但是有个问题,缓存什么时候更新呢?百度了一下:

1.利用定时器定时刷新

2.利用lru-cache(PS:要好好学习一下)

鉴于我的项目这几个接口并不需要很多的增删改,所以我决定在增删改的时候清空

cache就好

this.interfaceMap.clear()

 



这篇关于体验一下nest.js利用缓存带来的方便的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程