目前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()