第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

我如何通過緩存策略將NestJS API性能提升50% ??

標(biāo)簽:
性能測試 API

解释:这个标题简洁明了地传达了文章的核心内容,即通过缓存技术将API性能提升了50%,同时保留了原标题中的兴奋感(🚀表情符号),符合中文的表达习惯。

前几天,我注意到我的一些API端点变慢了点儿。原本只需400毫秒的请求,开始延长到800毫秒甚至更久。这听起来或许不算大问题,但在高流量的应用中,每一毫秒都至关重要。

我仔细研究了这个问题,发现了一些关键问题:
对相同的数据进行了重复的数据库查询。
高流量导致不必要的计算量。
没有设置缓存,每次请求都从新获取数据。

为解决这个问题,我采用了三种缓存策略,将响应时间减少了50%。下面我来说明一下具体是如何实现的。

1. 基于内存的缓存技术:使用 Redis 进行内存缓存

首先,我增加了Redis缓存来存储频繁访问的数据。不再每次都直接访问数据库,而是将结果存储在Redis中,并设置了TTL(生存时间)

🔹 NestJS 集成部分:介绍如何将 NestJS 集成到项目中.

    import { CacheModule } from '@nestjs/cache-manager';  

    @Module({  
      imports: [  
        CacheModule.register({  
          store: 'redis',  
          host: 'localhost',  
          port: 6379,  
          ttl: 60 * 5, // 缓存5分钟(生存时间:Time To Live)  
        }),  
      ],  
    })

🔹 从 Redis 获取数据并存储数据

@Injectable()
export class MyService {
  constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}

  async getData(id: string): Promise<any> {
      const cachedData = await this.cacheManager.get(id);
      if (cachedData) return cachedData;
      const freshData = await this.databaseQuery(id); // 长时间查询
      await this.cacheManager.set(id, freshData, { ttl: 300 }); // 设置缓存过期时间为300秒
      return freshData;
    }
}

成果:经常被访问的数据的数据库查询减少了多达60%

2. 使用 Next.js 的 ISR 和 SWR 进行客户端缓存技术

接下来我们要做的是利用Next.js的缓存功能来减少那些不必要的后端请求。

🔹 增量静态生成 (ISR) 用于缓存 API 响应:

    export async function getStaticProps() {  
      const data = await fetchData();    
      return { props: { data }, revalidate: 300 }; // 缓存时间为5分钟  
    }

🔹 客户端缓存中的 SWR(过时验证缓存策略):

我们使用了 useSWR 这个函数从 /api/data 这个 API 地址获取数据,并且设置了每5秒刷新一次。在这里,fetcher 是用来处理实际的 HTTP 请求的函数,data 存储获取到的数据,而 error 存储可能出现的错误。

后端请求减少了 40%,同时确保数据保持新鲜。

3. 使用 Prisma 进行数据库查询优化

即使使用了缓存,仍然有一些查询是必要的。为了使这些查询更快,我:
🔹 利用索引来 优化常见查询。
🔹 实现了分页 来避免加载不必要的记录。
🔹 利用了 Prisma 的查询缓存功能 来减少重复操作。

    const users = await prisma.user.findMany({  
      take: 50, // 每次只取50个用户  
      skip: 100, // 实现分页功能  
    });

结果: 通过优化索引和分页,查询速度快了一倍!

影响如下:更快速的 API,更开心的用户

实施了这些缓存策略后,我看到了:
✔️ API响应时间从约800毫秒降至约350毫秒,达到50%的改进
✔️ 由于Redis和客户端缓存,数据库负载减轻了
✔️ 更快的API响应和预加载数据带来了更好的用户体验

缓存绝不仅仅是提升性能——它真的是一项颠覆性的技术! 如果你正在使用 NestJS + Next.js ,添加 Redis、ISR、SWR 以及数据库优化可以使你的应用大为不同

👉 你以前优化过 API 性能吗?你觉得哪种方法最有效?咱们来聊聊吧!

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消